不同数据库服务器间表间取数--在线等
现有这样一个问题,A数据库库服务器中的C数据库的多张表数据,需导入B数据库服务器的D数据库对应的表中。但两个库所对应的表字段不完全相同。如果有做过这方面的朋友,请给点思路。如果两个数据库都在同一个服务器上就好办了。
------解决方案--------------------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 ' ]   
 -- 
 先建立鏈接
------解决方案--------------------先建连接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(失败)   
 看帮助,然后访问方法 select * from [servername].[database]..[table]
------解决方案----------------------创建链接服务器 
 exec sp_addlinkedserver   'srv_lnk ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 
 exec sp_addlinkedsrvlogin  'srv_lnk ', 'false ',null, '用户名 ', '密码 ' 
 go   
 --返回在本地服务器上定义的链接服务列表 
 exec sp_linkedservers   
 --查询示例