使用导入/导出向导中的查询将数据从一个服务器复制到另一个服

时间:2011-03-26 00:45:39

标签: sql sql-server tsql data-migration

我在一个数据库服务器中有一个表a,另一个服务器中有表b。

我想使用表a中的值更新表b。

如何在查询中指定服务器名称?

UPDATE SELECT * from [db1].[dbo].StgMGBPData
   SET ASO_Ind = [db2].[dbo].Customer_Names.ASO_Ind,
       Company = [db2].[dbo].Customer_Names.Company,
       Rpt_Cust_ID = [db2].[dbo].Customer_Names.Rpt_Cust_ID
  FROM [db2].[dbo].Customer_Names
  JOIN [db1].[dbo].StgMGBPData ON [db2].[dbo].Customer_Names.Src_Cust_ID = [db1].[dbo].StgMGBPData.CustomerID

2 个答案:

答案 0 :(得分:1)

尝试链接服务器,因为没有链接服务器,您无法在查询中使用服务器名称。

您可以使用sp_addlinkedserver。请看这里的例子:

EXEC sp_addlinkedserver
   @server = 'SERVER',-- your servername
   @provider = 'SQLOLEDB',
   @srvproduct = '',
   @datasrc = 'SERVER', -- your servername
   @catalog = 'NHS_032808' 
   -- your database name which you want to connect

就像那个执行过程之后的那个参数一样 您可以在连接的数据库中触发查询,如下所示。

select * from SERVER.NHS_032808.dbo.tbl_resident_mst

答案 1 :(得分:0)

如果缺少权限阻止您使用链接服务器,则可以从客户端连接到两个服务器,并在服务器A中的表上具有必要的选择权限,并在服务器中的表上具有必要的更新/插入权限B,那么您可以在客户端使用Micorosoft JET桥接服务器。来自服务器A的数据被拉出到客户端,然后被推送到服务器B.这属于“异构连接”的一般类别,这是企业(多服务器)场景中JET的主要优势之一。这种桥接需要比链接服务器方法更多的带宽,但它将完成工作。您可以在JET中为每个服务器中的表创建链接,然后可以在同一查询中引用它们。