2

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

有没有办法配置执行包任务,以便他们重试定义的次数(目前,在子包中的一个任务失败时,执行包任务失败。发生这种情况时,我想要任务在放弃和失败父包之前重试)

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

有没有更清洁或更通用的方法来做到这一点?

4

1 回答 1

5

是的,放入Execute Package Task一个For Loop Container. 定义一个用于计数的变量,一个用于成功运行指标和一个 MAX_COUNT 常量。在 Package Task - Expressions 的属性中,定义

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

使用 Success 行将 PackageTask 与 ScriptTask 连接起来。

或者

For Loop Container定义表达式中

MaximumErrorCount - Const_MAX_COUNT

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

于 2013-07-19T08:02:12.493 回答