2013-07-19 52 views
0

我有一個SSIS包,它叫號執行其執行ETL操作包任務的SSIS執行包任務 - 失敗重試子包

有沒有配置執行包任務,使他們重試的方式(當前,在子包中的任務失敗時,執行包任務失敗,當發生這種情況時,我希望在放棄和失敗父包之前重試該任務)

我知道的一個解決方案是爲數據庫中的每個包設置一個標誌,在成功時將其設置爲定義的值,並將每個包調用到for循環容器,直到標誌成功或計數超過pr edefined重試計數。

有沒有更清潔或更通用的方法來做到這一點?

回答

3

是的,把Execute Package TaskFor Loop Container。定義一個變量,它將執行計數,一個用於成功運行指標和一個MAX_COUNT Constance。在包任務的性質 - 表達式,定義

FailPackageOnFailure - False 

後執行任務把Script Task讀/寫瓦爾:SuccessfulRun,腳本:

Dts.Variables["SuccessfulRun"].Value = 1 

在for循環的特性:

InitExpression - @Val_Counter = 0 
EvalExpression - @Counter < @MAX_COUNT && @SuccessfulRun == 0 
AssingExpression - @Val_Counter = @Val_Counter + 1 

使用成功行連接PackageTask和ScriptTask。

OR

For Loop Container定義表達

MaximumErrorCount - Const_MAX_COUNT 

但是這一次並沒有被我又測試...

+0

將是條件退出從什麼for循環,如果子包的第一次(或第n次,N Akash

+0

查看已更新的答案 – makciook

+0

太棒了,會使用此方法的稍微修改版本 – Akash