2013-12-20 50 views
0

我試圖從兩個不同的鏈接服務器訪問表。基本上來自一臺服務器,我得到的ID列表和其他鏈接的服務器,我需要得到兩個其他列的ID匹配。如何在同一查詢中訪問兩個不同的鏈接服務器

我試圖從一臺服務器獲取該ID的第一個,並將其填充到一個excel中。在此之後,我從其他服務器獲取所有數據,並編寫了一個vb宏來選擇匹配的行。這實際上需要很多時間,並且在最近的時候,excel會掛起,因爲實際上有很多內容需要比較。有一個非常簡單的解決方案嗎?

我正在嘗試類似於下面的內容,但面臨的問題,以獲得結果。

select * from openquery([server1], 
    'select schema1.table1.col1, schema1.table1.col2 from schema1.table1 where schema1.table1.col1 exists 
    (select * from openquery([server2],'select schema2.table2.col1 from schema2.table2')') 

任何幫助將不勝感激。

非常感謝。

+0

假設這是SQL Server? – gvee

+0

什麼數據庫?由於DBMS之間的操作方式經常不同,因此如果您在問題中添加適當的DBMS(SQL Server,MySQL,Oracle或其他)標籤,它會有所幫助。 –

+0

是Ken White。我應該清楚數據庫部分。兩者都是DB2服務器,我將這些服務器添加爲鏈接服務器。我正試圖在SSMS中執行這個查詢。 – Mekala

回答

0

我簡直就是把它放在一起,在本地表和1個鏈接的數據庫表之間進行查詢。智能感知可能不「喜歡」鏈接服務器表,但它確實工作:

Select GlobalEntityID, LicenseNumber, IssueDate, ExpireDate, BusinessLicenseClosedDate, bl.Issued, bl.Expire, bl.Cease 
From COLICENSECERTIFICATION lic 
Inner Join 
    [LinkedServer].[DB].[schema].[blAttribs] bl on lic.LICENSENUMBER = bl.Account_key 
Order by LicenseNumber; 
go 

你可以把你的「位置」子句中有匹配任何其他條件一樣好,甚至添加其他內連接來添加其他鏈接的服務器表查詢。

+0

我正在使用SQL Server 2012進行此查詢,但它應該在2005年起作用。 – JFV

+0

謝謝JFV。我可以一次訪問一個鏈接的服務器,但是當我想要從兩個不同的鏈接服務器檢索數據時無法訪問。要在此添加,這兩個服務器都是DB2鏈接服務器 – Mekala

+0

好吧,我沒有任何DB2服務器可以測試。祝你好運! – JFV

相關問題