我正在使用Visual Studio 2012.我创建了一个使用Sequence Containers的SSIS解决方案。
SSIS包的重点是这一点。每隔3和5个工作日,我需要创建文件夹并将文件复制到其中。在第3个工作日,文件将复制到相应的第3个工作日文件夹。同样在第5个工作日。这些文件夹和文件存放在一个名为yyyymm的父文件夹中,即201411.两者的文件夹结构有点奇怪,但这是我无法控制的,而不是问题。
我无法弄清楚如何计算工作日,所以我希望设计SSIS包以便单个SSIS包可以完成两者的方式是使用Success / Failure切换优先约束。
我设计了流程,以便第一次运行包时,它会创建Day3文件夹,然后复制文件。第二次运行day3包时会注意到Day3文件夹已经创建并失败。那是失败的意图。我希望包的失败影响父序列容器,并且序列容器完全失败。在此故障之后,我希望程序包继续沿着故障约束,创建Day5文件夹并复制这些文件。
问题是任务失败了,但这会完全停止包。流程不会沿着故障约束继续并执行Day5功能。我已经尝试调整包中的属性,序列容器以及调整传播系统变量,正如我通过互联网搜索建议的那样,但我无法使预期的流程起作用。
可能有更好的方法来完成整个过程,我对建议持开放态度,但这个查询的真正目的是弄清楚如何让Sequence容器整体失败并让包继续执行Day5的功能。
第3个工作日
第五个工作日
SSIS包
期望的结果。如果子包在其中失败,则序列容器将失败。
回应以下评论。我试图设置一个布尔约束,但这也不起作用。不确定我是否正确这样做了。
答案 0 :(得分:0)
执行此操作的替代方法是在Package级别设置一个布尔变量,一旦Day3失败,就会将其设置为False。在Failure precedence约束中,您将检查以查看此变量的值。如果变量的值为FALSE(或true),则可以继续使用Day5容器,否则忽略它。
我想到的另一件事是,您可以在第3天容器之后切换优先约束的AND / OR。只是想检查一下,看看是否会改变行为。