我有一个包含大量容器和逻辑的 SSIS 包。我正在运行一个附加任务(我想独立运行),假设它充当“事件监听器”。当这个单独的任务出错时,我想出错整个包。我想,它应该默认工作,但令我惊讶的是,它不是:-
FailPackageOnFailure
和
FailParentOnFailure
属性,但它不起作用。包的一个部分发生故障不会导致另一个未连接的部分停止执行。一旦执行部分完成,包
将会失败,但是Sequence Container 3
无法知道
Sequence Container 2
中发生了什么。 老实说,这就是我们想要的。如果
Sequence Container 3
正在执行 DML,如果包中其他地方的不相关故障突然使一切突然停止,您可能会使数据处于不幸的状态。
如果您不想在
Sequence Container 3
失败时运行
Sequence Container 2
,那么只需从 Sequence Container 2
到 Sequence Container 3
运行优先级约束,#3 才会执行,直到 #2 成功并且
Execute SQL Task
成功了。
我重新设计了包,使其包含标志检查。
假设我们有一个成功标志作为用户变量,默认情况下为 False。
现在,我们在序列 2 执行结束时将此变量设置为 True,标志着该序列中所有其他任务的成功。
需要设置容器的
components中的属性FailParentOnFailure 为真 (或 FailPackageOnFailure 或两者)。 在您的屏幕截图中,
执行 SQL组件中的属性需要设置为 TRUE。