当其中一个容器失败时,SSIS 包是否失败

use*_*579 4 sql-server events ssis ssis-2008 ssis-2012

我有一个包含 1 个容器的包。如果该容器失败,ssis pacakge 是否失败!?该物业

对于容器,FAIL PACKAGE ON FAILURE 为 false。

这是否意味着仅当此属性设置为 TRUE 时包才会失败,否则只有容器状态失败,而包状态不是!?

Tro*_*eft 5

是的。如果 Sequence Container 失败,整个包都会失败。提升MaximiumAllowedErrorsSequence Container的属性以获得您想要的行为。

例子

下面我们有一个示例包。序列容器有一个永远不会成功的任务。

在此处输入图片说明

上面,Sequence Container 失败了,Package 失败了。下面是上面容器的属性。这些是新容器的默认值。

在此处输入图片说明

现在让我们停下来学习。如果我们将包行为与属性设置进行比较,这看起来是错误的。在这里,我们设置了FailPackageOnFailure=False,但 Sequence Container 故障会导致 Package 故障。为什么是这样?不直观的属性名称。请参阅Microsoft Connect 问题。您并不孤单。微软官方的解释是这样的。

尽管之前有一些非常循环的消息,但我们相信该功能的行为符合设计。当您将 FailParentOnFailure 设置为 false 时,父级将不会失败,直到子级中的失败次数超过 MaximumAllowedErrors 阈值。当您将 FailparentOnFailure 设置为 true 时,无论 MaximiumAllowedErrors 阈值如何,父级都会在第一次出现错误时失败。

从那句名言中获得的重要信息是FailPackageOnFailureMaximiumAllowedErrors成对工作!!!

所以 - 知道这一点 - 我们可以通过将MaximiumAllowedErrors计数从 1 增加到 2来实现预期的行为。

在此处输入图片说明

这将允许您拥有一个失败的序列容器,但不会使整个包失败。

在此处输入图片说明

希望这可以帮助!