2013-05-20 23 views
0

當談到在鏈接服務器之間傳輸數據時,迄今爲止我的工作中使用了幾種方法。鏈接服務器上最快的數據傳輸

我想知道是否有一個可接受的最快/最有效的方式,這樣的任務應該被處理?或者當一個應該被用於另一個時,會出現不同的情況嗎?

我已經使用:

OPENQUERY

INSERT INTO Table (col1, col2, col3) 
SELECT col1, col2, col3 
FROM OPENQUERY([server]...... 

OPENROWSET

INSERT INTO Table (col1, col2, col3) 
SELECT col1, col2, col3 
FROM OPENROWSET('SQLOLEDB', 'Server=[server]....... 

不是Temptable/SP

INSERT INTO #Temp 
EXEC [server].[db].[dbo].[storedprocedure] @Param1, @Param2 

經過一些'谷歌搜索'我沒有得到明確的答案...或者有另一種選擇嗎?

回答

2

重要的是確保遠程查詢實際上是遠程執行的。

This will發生在temp表/ sp路徑中。

對於其他2個選項,它可能會在任何排序/過濾之前在本地提取所有數據。 這是否取決於鏈接的服務器設置。不過,他們有其他故障也

  • 你無法控制鏈接的服務器設置與OPENROWSET,因爲它是即興
  • OPENQUERY和OPENROWSET不允許參數:只有字符串常量

所以,選項3是最好的途徑

如需更多信息,請參閱

+0

優秀的,謝謝!我已經測試過了 - 是的,它遠程執行這些程序確實有所幫助。 – William

相關問題