忽略基于SQL Result

时间:2017-06-29 18:36:02

标签: sql-server ssis

我有一个主SSIS包,它根据存储在Sql Server中的作业运行请求队列运行多个其他SSIS包。

请参阅This is my package

一般的想法是我检查队列以查看是否存在对该包的活动请求,如果存在,则执行指定日期范围的包。在所有程序包运行后,我获取生成的所有文件,重命名它们/将它们移动到新文件夹,更新日期范围,然后再次运行新日期范围的程序包。

我的问题是这个主包是一种“全有或全无”的东西。如果任何子包没有运行请求,则由于执行Sql任务(P1,P2等)未返回作业运行请求,整个循环将失败。我尝试更改这些执行sql任务以返回虚拟值'NoRequest'以解决此问题,然后在箭头上设置表达式以检查此情况。这会过滤掉没有作业运行请求的软件包,但现在的问题是,如果所有以前的节点由于连接而执行,那么所有软件包执行后的最后3个节点都不会执行。

不确定如何绕过这个,任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

看起来您需要更改导致编辑当前财政周的文件名节点的所有箭头的优先约束,以便能够始终运行最后3个节点。

  • 右键单击这些绿色箭头,然后单击编辑以打开 Precedence Constraint Editor
  • 在多个约束框中选择Logical OR. One constraint must evaluate to True选项。

导致编辑当前财政周的文件名节点的箭头现在将点缀为绿色。

答案 1 :(得分:0)

一种可能的方法是使用一个数字而不是一个标志,然后用特定的数字设置每个进程(例如1; 2; 4; 8..etc)你保留一个过程的结果已经完成的并没有完成。最后,您只需要针对您可以指定的规则检查该值。我希望有所帮助。