当SSIS序列容器失败时,为什么我的故障流不会启动?

时间:2011-11-26 00:00:33

标签: ssis containers sequence constraints operator-precedence

我有一些SSIS序列容器,如果其中的任何任务失败,我想将流程引导到一个清除所有内容的SQL任务,这样我就可以解决问题并再次运行它而不会有重复的数据。我的问题是,即使其中一个序列容器中的某些内容失败,我也无法将流引导到SQL任务中。似乎这应该是默认行为,但必须有一些我正在设置的设置。我玩过设置FailParentOnFailure,但所有这一切都会阻止其他程序包运行。我会插入一张图片来帮助理解我所设置的内容,但猜测我的声誉还不够好。 :P

4 个答案:

答案 0 :(得分:21)

我认为在这个绝对一个例子中,一张图片可以帮助其他人回答我的问题。如果失败,我有3个序列容器都指向同一个SQL任务。我希望在任何序列容器出现错误时运行SQL任务,因此必须将优先约束设置为逻辑OR,否则它将永远不会运行,除非所有3个碰巧都失败。将其更改为OR,它就像我想要的那样工作。

答案 1 :(得分:6)

确保单击Constraints上的Edit并将Multiple Constraints的最后一部分更改为OR,以便如果其中任何一个失败则执行任务,否则它将等待所有这些失败。

答案 2 :(得分:3)

如果FailPackageOnFailure = true,则检查序列容器属性,它不会触发“失败优先约束”。

答案 3 :(得分:1)

如果没有关于Sequence Containers的更多细节,很难确定问题。

我会尝试检查容器的Propagate系统变量。 每当您的任务可能失败并且您不希望整个程序包停止时,请确保执行以下操作之一:

  • 转到Event Handlers并对OnError事件执行某些操作 对待失败或
  • 将该任务的Propagate系统变量设置为False

我会提供一些截图,但我没有足够的代表。相反,我会留下一些链接,提供有关此主题的更多信息:

与您的问题类似:http://sqlserverselect.blogspot.com/2010/12/ssis-foreach-loop-container-continue-on.html

有关事件传播的详细信息:http://simonworth.wordpress.com/2009/11/11/ssis-event-handler-variables-propagate/