SSIS 多流约束重新加入单个可执行文件不继续

SSIS multiple flow constraints re-joining to a single executable not continuing

首先,我是 SSIS 的新手,不确定用什么格式来重复table测试

来解释问题

所以我的任务是循环遍历文件夹以查找平面文件,如果格式正确,则将它们加载到 SQL 服务器暂存 table。这似乎工作正常

下一位是奇怪的位。我在两条腿上都有一个成功的拆分和一个失败的拆分(用于用户通知等)我 运行 一个 SQL 任务来计算暂存 table 中要处理的行数。如果它大于零,我想 运行 我的 SQL 处理加载到主数据库 table 数据的存储过程,然后清理。

在我的调试电子邮件中,我看到行数大于 0,但任务没有继续。我不明白为什么。我尝试了多种约束组合(完成时、成功时、成功时和 RowsToProcess>0)。 我还尝试删除和添加我的 SQL 任务并重新映射。 (顺便说一句,我所有的任务都在 SSMS 等中运行)

似乎没有任何效果唯一的是此时有2个分支重新加入,但肯定不会影响它,不是吗? (见下面的原始屏幕截图)

这是我的控制流程,如果我遗漏了什么,请添加评论,如果我知道,我会提供信息

我的处决结果

进一步测试两个executable似乎确实是问题所在!那么,补充问题。

  1. 两个约束重新连接到 SQL 任务是否会停止 SSIS 中的流程(在 BPA 任务中心中不会)?
  2. 如果是这种情况是否意味着您必须并行重复代码? (例如,如果我要在流程结束时使用 运行 清理脚本,我将不得不为成功阶段和失败阶段分别编写一次)。这似乎效率低下,我错过了什么吗?

我想我已经找到了您正在寻找的答案(去给它一个赞)

我不知道,但基本上,它说 bot 分支必须成功完成(逻辑 AND)才能继续流程,这不会发生,因为在这种情况下正确的分支甚至不会运行。 可以在“多重约束”部分下的“约束属性”(链接块的箭头上的 right-click)中更改默认行为。 也就是说

我从未使用过这种方法,但这取决于用例。我会使用“序列容器”来避免复制块或多个约束,这是不一样的,但只要您不必将数据从一个块传递到另一个块就可以工作。

在你的例子中,我将除最后两个块之外的所有块都放在一个序列容器中,并且在容器完成后执行最后两个,因为它们必须始终 运行 在前一个操作块之后

关于容器的注意事项: 容器不输出数据,但对逻辑分组操作很有用,你甚至可以 运行 只是一个容器而不是整个包(来自 VS)。

看来今天我也学到了一些新东西... 希望这可以帮助您解决问题