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似乎确实是问题所在!那么,补充问题。
- 两个约束重新连接到 SQL 任务是否会停止 SSIS 中的流程(在 BPA 任务中心中不会)?
- 如果是这种情况是否意味着您必须并行重复代码? (例如,如果我要在流程结束时使用 运行 清理脚本,我将不得不为成功阶段和失败阶段分别编写一次)。这似乎效率低下,我错过了什么吗?
我想我已经找到了您正在寻找的答案(去给它一个赞)
我不知道,但基本上,它说 bot 分支必须成功完成(逻辑 AND)才能继续流程,这不会发生,因为在这种情况下正确的分支甚至不会运行。
可以在“多重约束”部分下的“约束属性”(链接块的箭头上的 right-click)中更改默认行为。
也就是说
我从未使用过这种方法,但这取决于用例。我会使用“序列容器”来避免复制块或多个约束,这是不一样的,但只要您不必将数据从一个块传递到另一个块就可以工作。
在你的例子中,我将除最后两个块之外的所有块都放在一个序列容器中,并且在容器完成后执行最后两个,因为它们必须始终 运行 在前一个操作块之后
关于容器的注意事项:
容器不输出数据,但对逻辑分组操作很有用,你甚至可以 运行 只是一个容器而不是整个包(来自 VS)。
看来今天我也学到了一些新东西...
希望这可以帮助您解决问题
首先,我是 SSIS 的新手,不确定用什么格式来重复table测试
来解释问题所以我的任务是循环遍历文件夹以查找平面文件,如果格式正确,则将它们加载到 SQL 服务器暂存 table。这似乎工作正常
下一位是奇怪的位。我在两条腿上都有一个成功的拆分和一个失败的拆分(用于用户通知等)我 运行 一个 SQL 任务来计算暂存 table 中要处理的行数。如果它大于零,我想 运行 我的 SQL 处理加载到主数据库 table 数据的存储过程,然后清理。
在我的调试电子邮件中,我看到行数大于 0,但任务没有继续。我不明白为什么。我尝试了多种约束组合(完成时、成功时、成功时和 RowsToProcess>0)。 我还尝试删除和添加我的 SQL 任务并重新映射。 (顺便说一句,我所有的任务都在 SSMS 等中运行)
似乎没有任何效果唯一的是此时有2个分支重新加入,但肯定不会影响它,不是吗? (见下面的原始屏幕截图)
这是我的控制流程,如果我遗漏了什么,请添加评论,如果我知道,我会提供信息
我的处决结果
进一步测试两个executable似乎确实是问题所在!那么,补充问题。
- 两个约束重新连接到 SQL 任务是否会停止 SSIS 中的流程(在 BPA 任务中心中不会)?
- 如果是这种情况是否意味着您必须并行重复代码? (例如,如果我要在流程结束时使用 运行 清理脚本,我将不得不为成功阶段和失败阶段分别编写一次)。这似乎效率低下,我错过了什么吗?
我想我已经找到了您正在寻找的答案
我不知道,但基本上,它说 bot 分支必须成功完成(逻辑 AND)才能继续流程,这不会发生,因为在这种情况下正确的分支甚至不会运行。 可以在“多重约束”部分下的“约束属性”(链接块的箭头上的 right-click)中更改默认行为。 也就是说
我从未使用过这种方法,但这取决于用例。我会使用“序列容器”来避免复制块或多个约束,这是不一样的,但只要您不必将数据从一个块传递到另一个块就可以工作。
在你的例子中,我将除最后两个块之外的所有块都放在一个序列容器中,并且在容器完成后执行最后两个,因为它们必须始终 运行 在前一个操作块之后
关于容器的注意事项: 容器不输出数据,但对逻辑分组操作很有用,你甚至可以 运行 只是一个容器而不是整个包(来自 VS)。
看来今天我也学到了一些新东西... 希望这可以帮助您解决问题