通过链接服务器连接表

时间:2018-05-01 09:37:20

标签: sql sql-server join linked-server

我有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的链接服务器吗?

2 个答案:

答案 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