0
我有一個Nvarchar(max)超過60個字段的表,我需要將表複製到另一個數據庫與ssis。從一個數據庫複製大Nvarchar(最大)表到另一個
我禁用了所有的索引,它有一點幫助,但仍然需要大量時間來複制所有表(超過1M行) - 這一刻需要一個小時。
有沒有人有想法讓它跑得更快?
我有一個Nvarchar(max)超過60個字段的表,我需要將表複製到另一個數據庫與ssis。從一個數據庫複製大Nvarchar(最大)表到另一個
我禁用了所有的索引,它有一點幫助,但仍然需要大量時間來複制所有表(超過1M行) - 這一刻需要一個小時。
有沒有人有想法讓它跑得更快?
根據我的經驗,加載大量數據的最快方法是使用批量插入。這通常是從一個平面文件完成的,因此在執行批量插入之前,必須先將數據導出到文件。
如果你不喜歡平面文件的方法,另一種方法是編寫一個CLR例程。您可以使用SqlDataReader從存儲DataTable中的數據的表中讀取數據,然後使用SqlBulkCopy執行批量插入。這種方法的優點是可以使用緩衝系統來限制所需的內存。 SqlDataReader是高效的內存,它根據需要讀取行,然後從內存中刪除它們,但DataTable不是。因此,你爲自己設置了一個限制,比如說10,000行,並且每當DataTable達到此限制時,就執行SqlBulkCopy並刪除DataTable中的現有行並繼續執行下一批。