我有一個SSIS包,我正在處理ForEach
循環中的一些文件。 在循環中,我有一個處理數據流的任務。我已經通過將回路的maxerror count
設置爲0
來確保即使存在錯誤的文件,循環也不會停止。我嘗試使用ON ERROR
循環容器的事件處理程序上的腳本任務在消息框中捕獲錯誤。我得到三個,而不是一個錯誤。 Popagate
在數據流的OnPostExecute
事件中設置爲false
。 請幫忙。循環(SSIS)中的循環錯誤
主要包 - 循環任務 - 數據流任務
我有一個SSIS包,我正在處理ForEach
循環中的一些文件。 在循環中,我有一個處理數據流的任務。我已經通過將回路的maxerror count
設置爲0
來確保即使存在錯誤的文件,循環也不會停止。我嘗試使用ON ERROR
循環容器的事件處理程序上的腳本任務在消息框中捕獲錯誤。我得到三個,而不是一個錯誤。 Popagate
在數據流的OnPostExecute
事件中設置爲false
。 請幫忙。循環(SSIS)中的循環錯誤
主要包 - 循環任務 - 數據流任務
你所得到的script task
爲on Error
事件處理1個或多個錯誤的原因是因爲在容器中的子控件內的任何錯誤的情況下,該事件從Data Flow task
提高到其furthr在propogate
變量設置爲false
不會在這種情況下進行工作的高達更多package level
的ForEach
,因爲你在它的子組件設置爲0 overrides
任何propogate
設置MaximumErrorCount
。
一般來說,我嘗試創建的type int
一個ErrorCount
變量,在對DFT的事件處理程序的腳本任務我檢查計數
if (int.Parse(Dts.Variables["User::ErrorCount"].Value.ToString()) == 0)
{
Dts.Variables["User::ErrorCnt"].Value = 1;
//Do your logging operation or any operation
}
因此,在這樣的第一次事件處理程序被觸發,它將變量ErrorCount
設置爲1,以便DFT中的後續錯誤將使腳本任務中的IF條件失敗。
如果你只是有foreach循環內的一個組成部分,我建議你請使用以下方法
MaxErrorCount
屬性的foreach循環
爲DFT
創建event handler
。將propogate
變量設置爲False
並寫上面的代碼來檢查錯誤的數量。
我一般傾向於使用的,而不是設置MaxErrorCount
第二個方法,因爲這給了我更多的靈活性來處理單個組件級別的錯誤
有關詳情,請this MSDN鏈接這就解釋了在SSIS是如何工作的事件處理程序
謝謝你的解決方案。第二種方法按預期工作。 – Akshay 2013-03-06 08:17:49
你能展示你的包裝設計嗎? – praveen 2013-03-05 08:55:50
Praveen。請檢查截圖。雖然在我的瀏覽器中顯示不正確。控制流,數據流和循環的事件處理程序。只是一個腳本任務來說明錯誤。派生列如果發生錯誤,則填充錯誤3次。 – Akshay 2013-03-05 10:10:36