zoukankan      html  css  js  c++  java
  • 使用TSQL实现数据导出\导入(SQLSERVER—>SQLSERVER)

    今天尝试使用Transact-SQL进行数据的导出导入,收获颇丰。与使用DTS相比,效率要高很多!
     
    一、打开OPENDATASOURCE功能

    开始 —>
    所有程序  —>
    Microsoft SQL Server 2005  —>
    配置工具  —>
    SQL Server外围应用配置器  —>
    功能的外围应用配置器  —>
    实例名  —>
    Database Engine  —>
    即席远程查询  —>
    启用OpenRowset和OpenDatasource支持。
     
    否则,会报错:
    消息 15281,级别 16,状态 1,第 1 行
    SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器
     
    安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed
    Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
     
    二、打开远程连接
     
    开始 —>
    所有程序  —>
    Microsoft SQL Server 2005  —>
     配置工具  —>
    SQL Server外围应用配置器  —>
    服务和连接的外围应用配置器  —>
    实例名  —>
    Database Engine  —>
    远程连接  —>
    本地连接和远程连接   —>
    仅使用TCP/IP   —>
    应用  —>
     重新启动数据库引擎

    否则,会报错:
    链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "登录超时已过期"。
    链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "建立到服务器的连接时发生错误。连接到 SQL Server 2005 时,默认设置
    SQL Server 不允许远程连接这个事实可能会导致失败。"。
    消息 65535,级别 16,状态 1,第 0 行
    SQL 网络接口: 从注册表获取已启用的协议列表时出错 [xFFFFFFFF].
     
    三、打开客户端TCP/IP协议
    开始 —>
    所有程序  —>
    Microsoft SQL Server 2005  —>
    配置工具  —>
    SQL Server Configuration Manager  —>
    SQL Server 2005网络配置:启用TCP/IP 协议
    SQL Native Client  配置: 启用
                                                   默认端口-1433
     
    四、创建联接服务器

    exec sp_addlinkedserver @server='conndb04',
                            @provider='sqloledb',
                            @srvproduct='',
                            @datasrc='WINNIE\IIDC'
    exec sp_addlinkedsrvlogin @rmtsrvname='WINNIE\IIDC',
                              @useself='false',
                              @locallogin='admin',
                              @rmtuser='admin',
                              @rmtpassword='password';
     
    [注]这里的login帐户,应该是使用SQL Server身份验证的帐户,否则,会报错:xx用户无法登陆。。。
     
    五、在导入目标数据库中创建空表
            use wwww
            go
            create table pro_unit_sort(
            CulID varchar(40),
            Coll_Unit varchar(400),
            cul_Sort varchar(400))
     
    六、执行导出\导入
    select * into wwww.dbo.pro_unit_sort from conndb04.wwww_xx..dbo.xx._unit_sort;
     
           [注]
         
           1、第四步和第六步等同于:
           use wwww
           go  
           insert INTO OPENDATASOURCE(
           'SQLOLEDB',
           'Data Source=WINNIE\IIDC;
            User ID=admin;
            Password=password'
            ).wwww.dbo.pro_unit_sort
            select * from wwww_xx.dbo.xx.unit_sort;
          
           2、执行此操作时,将使用到UDP 1434端口,如果防火墙关闭了此端口的话,请将其打开。否则,会报错:
     
    链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "登录超时已过期"。
    链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "建立到服务器的连接时发生错误。连接到 SQL Server 2005 时,默认设置
    SQL Server 不允许远程连接这个事实可能会导致失败。"。
    消息 65535,级别 16,状态 1,第 0 行
    SQL 网络接口: 从注册表获取已启用的协议列表时出错 [xFFFFFFFF].
     
    参考文档:
    1、使用Transact-SQL进行数据导入导出方法详解:
      
    http://tech.it168.com/db/s/2006-08-16/200608160913336_1.shtml
     
    2、SQLServer的链接服务器技术小结
      
    http://www.linuxmine.com/33943.html
  • 相关阅读:
    Spring事务原理分析-部分二
    Spring事务原理分析-部分一
    Spring 通读官方文档
    Spring IOC 源码解析
    SpringAOP原理分析
    Docker学习笔记
    TCP、UDP和HTTP关系
    洛谷P3312
    洛谷P3327
    BZOJ3073
  • 原文地址:https://www.cnblogs.com/muyoushui/p/1571457.html
Copyright © 2011-2022 走看看