2010-10-29 74 views
3

我需要不斷地將ODBC數據源中的數據合併(上插/刪除)到SQL Server 2008數據庫(行數從一行到100000行不等)從ODBC源合併數據到SQL Server數據庫的最有效方法

,你會推薦什麼是最有效的方法(使用.NET 3.5):

  1. 使用SqlBulkCopy到臨時表中,然後使用臨時表作爲源調用與合併命令存儲過程。
  2. 調用具有表值參數的存儲過程,其中數據作爲參數發送(SqlDbType.Structured),該表參數用作合併命令的源。 是通過表參數發送到批量操作服務器的數據?在1000行以上的情況下使用它是否可行和有效?
  3. 使用合併命令調用存儲過程,使用批量從OpenRowset批量獲取來自ODBC源的數據(使用鏈接服務器?)
  4. 任何其他方式。

謝謝!

+0

我會傾向於一個,但我會順從其他人。也許可以請求身邊的人看看是否有任何Integration Services專業知識。 – 2010-10-29 12:51:56

+1

如果您執行臨時表,請臨時使用REAL表,而不是#Temp或@tabelvar表。如果發生什麼事情(停電,重啓等),您不希望部分合並記錄丟失。 – JNK 2010-10-29 12:53:06

+0

我正在考慮真實與臨時表,你的觀點是有益的。 – Debra 2010-11-01 08:38:11

回答

0

這種類型取決於導入的觸發器。如果要每10分鐘安排一次,我會使用選項1或創建一個SSIS包,它將執行與選項1相同的操作。JNK是正確的,最好使用永久表,它將避免分配問題,如果需要,它可以讓你從中間拿起這個過程。

在SSIS中你的工作流程是這樣的:

  • 截斷臨時表
  • 創建數據流任務從源導入數據到臨時表中,如果需要的話
  • 調用存儲過程合併處理錯誤數據

創建軟件包後,您可以通過SQL代理安排它。確保使用軟件包屬性上設置的DontSaveSensitiveData選項創建軟件包,以免發生奇怪的加密錯誤。

相關問題