请参阅该图以了解该情景。
现在我的包将在执行s后运行!任务,将遵循A或B路径。因此,如果遵循A,则执行任务S2和F2。但是如果遵循路径B,则执行任务F1和F3。但是在完成任务F3之后,流程也应该通过路径E进入任务S2。但是这不会发生,并且当任务F3完成时,程序包会以成功结束。
关于如何移动到路径E并在任务F3完成后执行任务S2和F2,我需要帮助。
感谢。
答案 0 :(得分:24)
您的问题与优先约束中的设置(蓝线)有关。您需要解决多个约束设置,因为您有两个优先约束导致一个任务(S2)。
您当前的配置显示在任务S2启动之前,路径A 和 E必须完成。由于这些路径中只有一个会完成,因此SSIS会停止。您需要进行更改,以便在路径A 或路径E完成时,启动任务S2。
执行以下操作进行更改。右键单击路径A或路径E,然后选择“编辑”。在Precedence Constraint Editor中,在Multiple constraints下,选择“Logical OR。一个约束必须求值为True”。单击“确定”关闭对话框。路径A和E将更改为虚线,表示您刚刚定义的OR条件。
答案 1 :(得分:0)
我的猜测是F3是一种非阻塞变换。所以你需要插入一个Semi或Fully Blocking变换来强制SSIS等到F3和S1执行S2。
有一个很好的列表here,以及对变换如何相互阻挡的更好解释。但我可能会使用 Union All ,F3和S1都是前辈,而S2则是后继者。