我在一个数据库服务器中有一个表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
答案 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中为每个服务器中的表创建链接,然后可以在同一查询中引用它们。