请问从一台服务器的 table1 表,导入数据到另一台服务器的table1 表的script 怎样写的呢?
两个表的数据结构是相同的

解决方案 »

  1.   

    1.在服务器1上作服务器2的链接服务器
    2.insert 服务器2.库.用户名.table1 select * from 服务器1.库.用户名.table1
      

  2.   

    1.在服务器2(被导入的服务器)上创建服务器1的链接服务器
    2.在服务器2上运行 insert into table1 select * from 链接服务器.数据库名.用户名.table1
      

  3.   

    1.在服务器2(被导入的服务器)上创建服务器1的链接服务器  这个以前没用过 ,期待一个实例
    (以下引自:联机帮助)
    sp_addlinkedserver
    创建一个链接的服务器,使其允许对分布式的、针对 OLE DB 数据源的异类查询进行访问。在使用 sp_addlinkedserver 创建链接的服务器之后,此服务器就可以执行分布式查询。如果链接服务器定义为 Microsoft® SQL Server™,则可执行远程存储过程。语法
    sp_addlinkedserver [ @server = ] 'server'
        [ , [ @srvproduct = ] 'product_name' ]
        [ , [ @provider = ] 'provider_name' ]
        [ , [ @datasrc = ] 'data_source' ]
        [ , [ @location = ] 'location' ]
        [ , [ @provstr = ] 'provider_string' ]
        [ , [ @catalog = ] 'catalog' ]参数
    [ @server = ] 'server'要创建的链接服务器的本地名称,server 的数据类型为 sysname,没有默认设置。如果有多个 SQL Server 实例,server 可以为 servername\instancename。此链接的服务器可能会被引用为下面示例的数据源:SELECT *FROM    [servername\instancename.]pubs.dbo.authors. 如果未指定 data_source,则服务器为该实例的实际名称。[ @srvproduct = ] 'product_name'要添加为链接服务器的 OLE DB 数据源的产品名称。product_name 的数据类型为 nvarchar(128),默认设置为 NULL。如果是 SQL Server,则不需要指定 provider_name、data_source、location、provider_string 以及目录。[ @provider = ] 'provider_name'与此数据源相对应的 OLE DB 提供程序的唯一程序标识符 (PROGID)。provider_name 对于安装在当前计算机上指定的 OLE DB 提供程序必须是唯一的。provider_name 的数据类型为nvarchar(128),默认设置为 NULL。OLE DB 提供程序应该用给定的 PROGID 在注册表中注册。[ @datasrc = ] 'data_source'由 OLE DB 提供程序解释的数据源名称。data_source 的数据类型为 nvarchar(4000),默认设置为 NULL。data_source 被当作 DBPROP_INIT_DATASOURCE 属性传递以便初始化 OLE DB 提供程序。 当链接的服务器针对于 SQL Server OLE DB 提供程序创建时,可以按照 servername\instancename 的形式指定 data_source,它可以用来连接到运行于特定计算机上的 SQL Server 的特定实例上。servername 是运行 SQL Server 的计算机名称,instancename 是用户将被连接到的特定 SQL Server 实例的名称。[ @location = ] 'location'OLE DB 提供程序所解释的数据库的位置。location 的数据类型为 nvarchar(4000),默认设置为 NULL。location 作为 DBPROP_INIT_LOCATION 属性传递以便初始化 OLE DB 提供程序。[ @provstr = ] 'provider_string'OLE DB 提供程序特定的连接字符串,它可标识唯一的数据源。provider_string 的数据类型为 nvarchar(4000),默认设置为 NULL。Provstr 作为 DBPROP_INIT_PROVIDERSTRING 属性传递以便初始化 OLE DB 提供程序。当针对 Server OLE DB 提供程序提供了链接服务器后,可将 SERVER 关键字用作 SERVER=servername\instancename 来指定实例,以指定特定的 SQL Server 实例。servername 是 SQL Server 在其上运行的计算机名称,instancename 是用户连接到的特定的 SQL Server 实例名称。[ @catalog = ] 'catalog'建立 OLE DB 提供程序的连接时所使用的目录。catalog 的数据类型为sysname,默认设置为 NULL。catalog 作为 DBPROP_INIT_CATALOG 属性传递以便初始化 OLE DB 提供程序。返回代码值
    0(成功)或 1(失败)结果集
    如果没有指定参数,则 sp_addlinkedserver 返回此消息:Procedure 'sp_addlinkedserver' expects parameter '@server', which was not supplied.使用适当 OLE DB 提供程序和参数的 sp_addlinkedserver 返回此消息: Server added.
      

  4.   


    --创建链接服务器
    exec sp_addlinkedserver  'ITSV','','SQLOLEDB','远程服务器名或ip地址'
    exec sp_addlinkedsrvlogin 'ITSV','false',null,'用户名','密码'--查询示例
    select * from ITSV.数据库名.dbo.表名--导入示例
    select * into 表 from ITSV.数据库名.dbo.表名--以后不再使用时删除链接服务器
    exec sp_dropserver 'ITSV','droplogins'--连接远程/局域网数据(openrowset/openquery/opendatasource)
    --1、openrowset--查询示例
    select * from openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)--生成本地表
    select * into 表 from openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)--把本地表导入远程表
    insert openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)
    select *from 本地表--更新本地表
    update b
    set b.列A=a.列A
     from openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)as a inner join 本地表 b
    on a.column1=b.column1--openquery用法需要创建一个连接--首先创建一个连接创建链接服务器
    exec sp_addlinkedserver  'ITSV','','SQLOLEDB','远程服务器名或ip地址'
    --查询
    select *
    FROM openquery(ITSV, 'SELECT *  FROM 数据库.dbo.表名')
    --把本地表导入远程表
    insert openquery(ITSV, 'SELECT *  FROM 数据库.dbo.表名')
    select * from 本地表
    --更新本地表
    update b
    set b.列B=a.列B
    FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名') as a 
    inner join 本地表 b on a.列A=b.列A--3、opendatasource/openrowset
    SELECT   *
    FROM   opendatasource('SQLOLEDB', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码' ).test.dbo.roy_ta
    --把本地表导入远程表
    insert opendatasource('SQLOLEDB', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码').数据库.dbo.表名
    select * from 本地表 
      

  5.   

    如上,如果是频繁的两库操作的话,
    如只需一次或次数不多可使用如下--*远程库
    --1
    select * from openrowset('SQLOLEDB','BERRY';'sa';'sa',tt.dbo.ALaw_FilePunish)--选择delete from openrowset('SQLOLEDB','BERRY';'sa';'sa',tt.dbo.ALaw_BestbigPunish)--删除
    --注意'192.168.18.252';'sa';'abc'中间是";",而不是","。
    --2
    select a.* from OPENQUERY('SQLOLEDB','BERRY';'sa';'sa',库名.dbo.表名) a
    SELECT a.* FROM OPENQUERY ('oradb','192.168.0.111';'sa';'sa',库名.dbo.表名) a
    --3
    SELECT * FROM OPENDATASOURCE('SQLOLEDB','Data Source=192.168.0.111;User ID=sa;Password=sa').tt.dbo.ALaw_BestbigPunish
    --第二个参数webconfig连接字符串可以使用delphi、visual studio等开发工具中的ADO控件自动生成相应的连接字符串
      

  6.   

    --*远程库
    --1
    select * from openrowset('SQLOLEDB','BERRY';'sa';'sa',tt.dbo.ALaw_FilePunish)--选择
    select * from openrowset('SQLOLEDB','远程服务器名';'用户名';'密码';'库名.dbo.表名')
      

  7.   

    请问从一台服务器的   table1   表,导入数据到另一台服务器的table1   表的script   怎样写的呢? 
    两个表的数据结构是相同的建立一个连接:
    insert into servername2.dbname2.dbo2.tb2 select * from servername1.dbname1.dbo1.tb1
      

  8.   

    不同服务器数据库之间的数据操作--创建链接服务器 
    exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 
    exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, '用户名 ', '密码 ' --查询示例 
    select * from ITSV.数据库名.dbo.表名 --导入示例 
    select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器 
    exec sp_dropserver  'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource) 
    --1、openrowset --查询示例 
    select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --生成本地表 
    select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --把本地表导入远程表 
    insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) 
    select *from 本地表 --更新本地表 
    update b 
    set b.列A=a.列A 
     from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b 
    on a.column1=b.column1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器 
    exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 
    --查询 
    select * 
    FROM openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ') 
    --把本地表导入远程表 
    insert openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ') 
    select * from 本地表 
    --更新本地表 
    update b 
    set b.列B=a.列B 
    FROM openquery(ITSV,  'SELECT * FROM 数据库.dbo.表名 ') as a  
    inner join 本地表 b on a.列A=b.列A --3、opendatasource/openrowset 
    SELECT   * 
    FROM   opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta 
    --把本地表导入远程表 
    insert opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名 
    select * from 本地表