繁体   English   中英

通过链接服务器连接表

[英]Joining Table via Linked Server

我有2个服务器和2个不同的数据库。

S1(服务器)和DB1(数据库)和T1(表)

S2(服务器)和DB2(数据库)和T2(表)

DB1具有到S2 DB2的链接服务器。

所以我可以运行一个查询

SELECT * FROM T1 
JOIN [S2].[DB2].[T2] T2
ON T1.[ID] = T2.[ID]

这可以正常运行。

但是,我如何以相反的方向运行它

例如

SELECT * FROM T2 
JOIN [S1].[DB1].[T1] T1
ON T2.[ID] = T1.[ID]

出现以下错误: “找不到服务器[S1]。[DB1]。[T1]”

无论如何,我可以朝这个方向加入而不必创建从S2到S1的链接服务器?

该查询:

SELECT *
FROM T2 JOIN
     [S1].[DB1].[T1] T1
     ON T2.[ID] = T1.[ID];

假定T2是本地的。 您可以进行混合:

SELECT *
FROM [S2].[DB2].[T2] T2 JOIN
     [DB1].[T1] T1
     ON T2.[ID] = T1.[ID];

可以将服务器链接到自身,因此,如果这样做,则可以在两个服务器上运行以下相同的查询:

SELECT *
FROM [S2].[DB2].[T2] T2 JOIN
     [S2].[DB1].[T1] T1
     ON T2.[ID] = T1.[ID];

如果您要在两个服务器上实现“等效”查询,则同义词可能会有所帮助。 您可能对此问题的答案感兴趣。

戈登的答案更为详尽,但您可以将第二个查询重写为:

SELECT *
FROM [S2].[DB2].[T2] T2
     JOIN T1
ON   T2.ID = T1.ID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM