2012-03-29 50 views
0

我有一個SSIS包,它假設有100,000個記錄循環在他們和每一個保存到少數表的細節。 它工作正常,直到它到達3000條記錄附近的某處,然後視覺工作室崩潰。此時devenv.exe使用了大約500MB,只處理了3000行。 我敢肯定,問題不在於特定的記錄,因爲它總是發生在不同的3K記錄上。 我有一個很好的計算機與2 GIG的RAM可用。 我在使用SSIS 2008.SSIS崩潰後的幾個記錄

任何想法可能是什麼問題?

謝謝。

+1

它在dtexec/dtexecui中做同樣的事嗎? – 2012-03-29 12:52:48

+0

我沒有檢查。我使用設計器來運行它。 – 2012-03-29 12:56:23

+1

當它崩潰時它會拋出什麼錯誤?你可以發佈控制流的截圖,然後發佈數據流? – billinkc 2012-03-29 13:17:31

回答

0

嘗試增加數據流任務的默認緩衝區大小。這裏給出

實施例:http://www.mssqltips.com/sqlservertip/1867/sql-server-integration-services-ssis-performance-best-practices/

最佳實踐#7 - DefaultBufferMaxSize和DefaultBufferMaxRows

正如我在,執行樹用於存儲傳入創建 緩衝器中的 「#6最佳實踐」 中說行和執行轉換。那麼 它創建了多少個緩衝區?一個 緩衝區有多少行?它如何影響性能?

創建的緩衝區數取決於緩衝區中有多少行適合緩衝區,以及有多少行適合緩衝區,具體取決於其他幾個因素。第一個考慮因素是估計的行大小,即 記錄中所有列的最大大小的總和。第二個考慮因素是數據流任務的DefaultBufferMaxSize屬性 。此屬性指定緩衝區的默認最大大小 。 的默認值是10 MB和其上部和下部 邊界由SSIS的兩個內部特性,這是 MAXBUFFERSIZE(100MB)MinBufferSize(64 KB)限制。這意味着緩衝區的大小爲 可以小到64 KB,大到100 MB。第三個 因子是DefaultBufferMaxRows它又是數據流的屬性 任務,它指定了緩衝區中的默認行數。其 默認值爲10000

雖然SSIS確實在調諧爲以 創建緩衝器的最佳數量,如果該大小超過 DefaultBufferMaxSize這些性能良好的作業,然後它在緩衝降低的行。對於 更好的緩衝區性能,你可以做兩件事。首先,您可以從源中刪除 不需要的列,並適當地在每列 中設置數據類型,特別是如果源是平面文件。這將使 能夠在緩衝區中容納儘可能多的行。 其次,如果您的系統具有足夠的可用內存,則可以調整 這些屬性以擁有少量大緩衝區,這可以提高性能。請注意,如果您將這些 屬性的值更改爲頁面假脫機(參見最佳實踐#8) 開始的點,則會對性能產生負面影響。因此,在爲這些屬性設置值 之前,請先在您的環境中進行全面測試,然後 對這些值進行適當設置。

您可以啓用BufferSizeTuning事件的日誌記錄,以瞭解有多少 行緩衝區包含並可以監視「緩衝區後臺」 性能計數器,看看是否SSIS已經開始頁面後臺。我將在本系列的下一個 提示中詳細介紹事件記錄和性能計數器。