2010-05-13 138 views
4

我在其中50,000個數據集中更新了50萬條記錄。現在我需要將更新的記錄提交回SQL Server 2005數據庫。將數據集中的數千條記錄更新爲SQL Server

什麼是做到這一點的最好的和有效的方式考慮的事實,這樣的更新可能是頻繁的(雖然併發不是問題,但性能)

+1

您的交易要求是什麼?你真的使用一個DataSet的(緩慢,休記憶打印)? – TomTom 2010-05-13 07:43:40

+1

首先,50萬條記錄是如何進入您的數據集的?你可以做一個SQL批量插入,而不是使用數據集? – 2010-05-13 07:44:46

+0

你在哪裏存儲這個DataSet?在某個網站或某個存儲過程中? – Insectatorious 2010-05-13 07:44:47

回答

5

我會用一個Batch Update

也記錄在here

+0

+1 - @MSIL - 我在更大規模上使用這種方法(數百或數百萬行),它適用於我。 – AdaTheDev 2010-05-13 08:07:55

+0

非常好 - 這確實是我需要的。非常感謝戴夫 – MSIL 2010-05-13 11:49:35

2

我同意戴維的回答,因爲這是我使用的。但是,您可以採取一種值得考慮的替代方法(畢竟所有情況都不一樣) - 如果我有另一個類似的要求,我將在未來考慮這一點。

您可以將更新後的記錄批量插入數據庫中的新表(使用SqlBulkCopy),這是一種將數據加載到數據庫(example)的極其快速的方式。然後在你的主表上運行一個UPDATE語句,以便從這個新表中獲取更新後的值,這些值將在最後放置。

使用SqlDataAdapter的批量更新方法允許您輕鬆處理特定行上的任何錯誤(例如,您可以告訴它在出現特定更新行時發生錯誤時繼續執行,因此它不會停止整個過程)。

+0

+1。這是我成功使用的一種方法...它不像批量更新那樣快捷簡單,但它運行良好,並且沒有太多工作要做。 – David 2010-05-13 08:20:37

+0

如果我發現數據正在增長到性能成爲一個大問題的程度,這會是第二好的方法。萬分感謝!! – MSIL 2010-05-13 11:51:14

相關問題