2012-04-16 86 views
1

來自不同的ETL工具,我試圖弄清楚如何在SSIS中運行時獲取每個組件的(生產)統計信息。Sql Server 2005 - 每個組件每次運行的SSIS統計

例如,如果平面文件正在從具有較高偏差的外部源(行/秒在不同時間劇烈變化)讀取,我想知道該信息。

如果SSIS有一個重要的「慢點」(緩衝區填滿/數據流受到影響),我還想知道這些信息。

並且使用sprocs以DMV爲例,CPU時間和readIO/writeIO也是理想的(並且對於通過以一致/可測量的方式從spro移動到SSIS來顯示改進的人員是有用的)。

我問這個問題的原因是我看到在調試期間通過BIDS的行,但它可能不反映生產中每個組件上的實際行/秒。

如何爲生產環境啓用/反思/獲取這些類型的統計信息(即使它需要一個小小的打擊,數字是一個大問題)。

謝謝!

-Darren

+0

關閉我的頭頂,onpre/onPOST等執行活動將在一個可執行的開始和結束的記錄。在數據流中,您可以記錄'OnPipelineRowsSent'事件以查看[dataflow](http://weblogs.sqlteam.com/jamesn/archive/2008/02/11/60504.aspx)組件內的實際時間。我將不得不考慮能否看到源組件上的指標是否暴露給我們。如果我有任何運氣,我會重新發布爲答案 – billinkc 2012-04-16 15:43:39

+0

感謝OnPipelineRowsSent,我偶然發現了幾次,但不斷嘗試使用EventHandlers,我不記得帖子,但一臉空白的說你不能可以從EventHandlers訪問PipelineRowsSent(或任何行計數度量),因此您將留下Log Providers(用於需要rowcount度量時)。這是日誌提供程序方法中針對行/秒(每分鐘行數,每個行的轉數)的非常好的帖子:http://weblogs.sqlteam.com/jamesn/archive/2008/02/11/60502.aspx對於平面文件源輸入流,仍然沒有rowcnt/sec,這很重要。 – dhartford 2012-04-16 19:37:53

回答

1

這在SSIS 2005中很難做到。當我試圖從複雜的SSIS包中的事件處理程序執行任務級別的日誌記錄時,我已經看到運行時引擎「剛剛停止」。一個想法是:僅通過在源適配器之後添加行計數轉換並在每個輸出行的數據流路徑上測試數據流。然後將一個執行SQL任務添加到每個數據流任務的OnPreExecute事件處理程序以記錄執行的開始,並將另一個執行SQL任務添加到相應的OnPostExecute事件處理程序。在onPostExecute邏輯中,存儲數據流任務執行的行數和結束時間。我相信這將提供足夠的指標來計算數據流管道的吞吐量。

希望這有助於 安迪

1

不知道是否會有幫助,但也許你可以嘗試在你的包配置日誌記錄,並選擇「爲SQL Server事件探查SSIS日誌提供」

它顯示了開始和之間的幾個信息數據源處理結束