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