2011-11-16 168 views
0

我已經創建了windows應用程序(C#.Net),用於將數據從一個數據庫遷移到另一個數據庫。 在這裏,我從數據庫ABC中選擇客戶表的所有行,並將所有行插入到數據庫XYZ的Dealers表中。SQL數據庫遷移 - 性能問題(將數據從一個數據庫複製到另一個數據庫)

我的問題是,當我從表中選擇1000行時,需要2分35秒來插入這1000條記錄。 但是當我從表中選擇5000行時,需要15分鐘(而不是10分鐘)來插入這5000條記錄

有什麼辦法來優化性能,以便我可以非常快速地插入所有記錄/數據。 (注意:這裏對於foreach循環中的每條記錄,我創建了sqlparameter並插入了sql語句)

另外我使用了進度條,但是當我從Windows應用程序中失去焦點時,它變得無響應(不響應作爲窗口標題),我看不到進度條的狀態/進度(但插入數據的過程在後臺工作,但不在UI中)。

如何解決這兩個問題?

+0

不要行插入行,使用某種[批量插入]的(http://msdn.microsoft.com/en-us/library/ms188365.aspx)。 –

+0

@MichałPowaga我不能使用BULK插入,因爲我必須使用代碼檢查許多條件。 – ravidev

回答

0

您可以爲一百條記錄創建單個sql命令並將其啓動,而不是單條記錄的單條sql命令,這將作爲批量工作。

http://blogs.microsoft.co.il/blogs/bursteg/archive/2007/12/05/sql-server-2008-t-sql-insert-multiple-rows.aspx

進度條可以用線程來更新。

http://msdn.microsoft.com/en-us/library/ms951089.aspx

+0

我不能使用單一的sql命令,因爲我需要檢查很多條件。我只是想知道任何技術來減少這個時間。 – ravidev

相關問題