[英]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.