簡體   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