SSIS执行包任务 - 在子包上失败时重试

时间:2013-07-19 07:09:42

标签: sql ssis

我有一个SSIS包,它调用执行ETL操作的许多执行包任务

是否有办法配置执行包任务,以便它们重试定义的次数(当前,在子包中的任务之一失败时,执行包任务失败。当发生这种情况时,我会就像在放弃和失败父包之前要重试的任务一样)

我知道的一个解决方案是为数据库中的每个包设置一个标志,在成功时将其设置为定义的值,并在for循环容器中调用每个包,直到标志成功或计数超过预定义的重试计数。

是否有更清洁或更通用的方法来执行此操作?

1 个答案:

答案 0 :(得分:4)

是的,将Execute Package Task放入For Loop Container。定义一个变量,它将执行计数,一个用于successrun指示符和一个MAX_COUNT Constance。在包任务 - 表达式的属性中,定义

FailPackageOnFailure - False

执行任务后放置Script Task读/写Vars:SuccessfulRun,脚本:

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

For循环的属性:

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

使用Success line将PackageTask与ScriptTask连接。

OR

For Loop Container定义表达式

MaximumErrorCount - Const_MAX_COUNT

但是这个还没有经过我的测试......