考虑 SSIS 包的以下场景:
序列容器包含两个用于从 Excel 文件加载数据的作业:
- 作业 A:尝试按照特定文件定义从 Excel 文件加载数据。
- Job B:如果 JOB A 失败,将执行 Job B。
在容器外部,执行最终任务以重置数据。
然而,我遇到的问题是,如果 JOB A 失败,即使 JOB B 接管并设法正确处理文件,容器也会被标记为失败。
虽然我可以通过使用一些变量和“先例约束”来规避这个问题(这可以在上面的第二个屏幕截图中看到),但我想知道是否有更优雅的方法,我只是确保序列容器不是标记为失败是加载数据失败的第一个任务。
现在,我首先想到的是MaximumErrorCount
在容器上使用属性。但是我在容器中还有其他任务,如果它们失败了,它可能会扰乱逻辑。
也许在现有容器中为 JOBS A 和 B 嵌套另一个容器是前进的方向?
但实际上(我是一个绝望的理想主义者)我希望找到的是 JOB A 的某种属性,它表示如果作业 A 失败,请不要以最简单的方式将容器标记为失败。想法?
您是否查看过序列中任务的 OnError 事件处理程序的Propagate变量?
检查此链接以获取信息。基本上,您禁用 OnError 事件的传播,这样祖先任务(或本例中的序列)就不会收到错误。