2013-02-13 93 views
4

我可以讓我的執行SQL任務看看2個不同的連接管理器。 對於實例:我需要從ServerA/DatabaseA查詢ServerB/DatabaseB的數據。 所以現在我需要寫一個查詢並從兩臺服務器上檢索數據。 現在2臺服務器沒有連接服務器,不一定。用不同的服務器/數據庫執行SQL任務

這是可能的,請讓我知道。

+1

它是兩臺服務器上相同的* *數據查詢或你想從一臺服務器獲取數據,並增強數據的信息從不同的位置設置? – billinkc 2013-02-13 19:53:06

+0

「不一定」是指你不想鏈接服務器,它們還沒有鏈接,你可以鏈接它們,或者你無法鏈接服務器?如果你不想做一個鏈接服務器,你可以使用命令OPENROWSET,請看這裏:http://jasonhaley.com/blog/post/2004/03/23/Using-OPENROWSET-for-moving-data-from -SQL-服務器到SQL-Server.aspx。你也可以做OPENDATASOURCE。 – Kprof 2013-02-13 20:13:38

回答

1

使用單獨的數據流源任務爲Server AServer B添加數據流任務。然後使用適當的「數據流轉換」任務加入結果。

作爲示例,此數據流將執行Flat File SourceOLEDB Source任務,對結果進行排序,然後對結果使用Merge Join任務。這聽起來像你的實現需要兩個OLEDB Sources或(ODBC,ADO NET等)。

我喜歡這種方法通過鏈接服務器或OPENROWSET,因爲您不必在SQL Server數據源上配置鏈接服務器或啓用Adhoc Distributed Queries

SSIS Data Flow

1

我已經找到一種方法來解決缺乏之前鏈接的服務器,和我做這樣的事情 - 給它一個嘗試:

if object_id('tempdb..#mytemptable') is not null begin drop table #mytemptable end 
select * into #mytemptable 
from openrowset('SQLNCLI10','Server=TheOtherServersName;Trusted_Connection=yes;','SELECT * FROM FullyQualifiedName.dbo.MyTable') 
/* Now use the temptable created on this server to do your join/subquery on whatever */ 
select * from MyOtherTable a 
join #mytemptable b on a.id = b.id 

乾杯!

+1

回答問題,而不是評論。對於SSIS,您的評論顯然是一個很好的答案。我不打算只是複製你的評論作爲答案,儘管你的代表竊取。 :) – Zee 2013-02-13 21:19:22

相關問題