我有一个SSIS包,其控制流包含序列中的一堆执行sql任务。
我需要检查每个任务的标志并运行任务(如果已设置),如果没有跳过并转到下一个任务。
这些任务中的每一个都执行存储过程。所以我可以检查过程和“返回”,如果没有设置。我正在寻找一个“SSIS”解决方案,如果有的话。
TIA
PS
答案 0 :(得分:49)
我认为你的问题和我的问题一样,我想在我的控制流中控制“内联”任务的执行。
我找到的最简单方法不涉及控制流对象之间的数据连接器上的表达式,而是在控件对象本身上使用表达式并使用表达式设置“禁用”值。这种方式在执行时,基于表达式评估跳过或不跳过对象。
作为示例,我想执行“执行SQL任务”以根据名为“ExtractType”的变量是否等于“Full”来删除索引。如果是那时我想在完全加载之前删除表上的索引。
答案 1 :(得分:33)
在控制流任务之间,单击箭头并选择“编辑”。执行此操作时,您将获得一个对话框,允许您检查任务的“约束”(成功,完成或失败),“表达式”(即您可以让执行sql任务返回一个值,将该值存储在一个变量,并检查表达式中该变量的值,以确定是否继续沿着您正在编辑的路径,“表达式和约束”,以及“表达式或约束”。除了逻辑之外,后两个是相同的。 “表达式和约束”要求表达式和约束都有一个真实条件,“表达式或约束”只需要表达式和约束中的一个条件的真实条件。