我有2台服务器,有2个不同的数据库。
S1(服务器),带有DB1(数据库)和T1(表)
和
带有T2(表)的DB2(数据库)的S2(服务器)
DB1有一个到S2 DB2的链接服务器。
所以我可以运行诸如
之类的查询SELECT * FROM T1
JOIN [S2].[DB2].[T2] T2
ON T1.[ID] = T2.[ID]
这样运行正确。
但是,我怎样才能以相反的方向运行
e.g。
SELECT * FROM T2
JOIN [S1].[DB1].[T1] T1
ON T2.[ID] = T1.[ID]
此错误“无法找到服务器[S1]。[DB1]。[T1]”
无论如何,我可以加入这个方向而无需创建从S2到S1的链接服务器吗?
答案 0 :(得分:3)
此查询:
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];
如果您尝试在两台服务器上实现“等效”查询,那么同义词可能有所帮助。您可能对这个问题的answers感兴趣。
答案 1 :(得分:0)
戈登的答案更为彻底,但您可以将第二个查询重写为:
SELECT *
FROM [S2].[DB2].[T2] T2
JOIN T1
ON T2.ID = T1.ID