通过链接服务器加入 Table
Joining Table via Linked Server
我有 2 个服务器和 2 个不同的数据库。
S1(服务器)与 DB1(数据库)与 T1(Table)
和
S2(服务器)与 DB2(数据库)与 T2(Table)
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]
此错误与 "Could not find server [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];
可以 link 一个服务器到它自己,所以如果你这样做,你可以 运行 在两个服务器上进行相同的查询:
SELECT *
FROM [S2].[DB2].[T2] T2 JOIN
[S2].[DB1].[T1] T1
ON T2.[ID] = T1.[ID];
如果您尝试在两台服务器上执行 "equivalent" 查询,那么同义词可能会有所帮助。您可能对这个问题的 answers 感兴趣。
Gordon 的回答更彻底,但您可以将第二个查询重写为:
SELECT *
FROM [S2].[DB2].[T2] T2
JOIN T1
ON T2.ID = T1.ID
我有 2 个服务器和 2 个不同的数据库。
S1(服务器)与 DB1(数据库)与 T1(Table)
和
S2(服务器)与 DB2(数据库)与 T2(Table)
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]
此错误与 "Could not find server [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];
可以 link 一个服务器到它自己,所以如果你这样做,你可以 运行 在两个服务器上进行相同的查询:
SELECT *
FROM [S2].[DB2].[T2] T2 JOIN
[S2].[DB1].[T1] T1
ON T2.[ID] = T1.[ID];
如果您尝试在两台服务器上执行 "equivalent" 查询,那么同义词可能会有所帮助。您可能对这个问题的 answers 感兴趣。
Gordon 的回答更彻底,但您可以将第二个查询重写为:
SELECT *
FROM [S2].[DB2].[T2] T2
JOIN T1
ON T2.ID = T1.ID