ssis - 根据条件控制 SSIS 包中的流程

标签 ssis conditional control-flow

有没有办法有条件地(通过脚本任务或其他任何方式)控制 SSIS 中的程序流?

目前我有一个包可以动态创建 5 个不同的 Excel 工作表(通过执行 SQL 任务)。有时可能所有 5 个都有数据,或者只有 1 个可能有数据。当它只有 1 个有数据时,就可以了。但是当有 5 个 DFT 试图同时将数据写入同一个工作簿(尽管里面有不同的工作表)时,真正的问题就出现了。包因 OLEDB 错误而失败。

经过一番折腾,我终于弄清楚这是一个并发控制问题,不允许我同时写入 excel 文件。为了进一步解决我的问题,我使用优先约束表达式来控制是否创建工作表。 但真正的麻烦是,在创建工作表后,程序包将无法同时尝试将数据写入 2 个不同的工作表。

有什么办法可以为 DFT 分配“执行命令”?这就是我正在寻找脚本任务的原因,以便当特定工作表的计数为 0 时它不起作用并且控件将移动到另一个分支。

希望我没有把你弄糊涂。但如果我有,我会很高兴提供关于这个问题的更多细节。感谢阅读。

最佳答案

我的第一个想法是拥有一堆序列容器,每个可能的 Excel 工作表一个,每个容器包含三个任务:

  1. 一个脚本任务,用于确定是否创建工作表,并相应地设置一个 bool 包变量
  2. 创建工作表的 SQL 任务
  3. 填充工作表的数据流任务

任务 1 和 2 之间的优先约束将是 bool 值为真的表达式:

screenshot of precedence constraint editor showing expression of @DoNorthRegion

任务 2 和 3 之间的优先约束将是成功约束,序列容器之间的优先约束也是如此。总的来说,它看起来像这样:

screenshot of four sequence containers, one expanded to show contents

关于ssis - 根据条件控制 SSIS 包中的流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13995000/

相关文章:

Python面向对象: how to stop procedure flow in an entire class with `return` statement?

visual-studio - 如何将 TFS 源代码控制与 Business Intelligence Studio 集成?

c# - SSIS-PostAsJsonAsync 不起作用

html - Pandas HTML 输出条件格式 - 如果值在范围内则突出显示单元格

loops - 不能写成 for 循环的 while 循环示例

c++ - 在 C++ 中编译类的代码时,控制流的顺序是什么?

c# - System.ArgumentException : Object is not an ADODB. RecordSet 或 ADODB.Record

sql-server - 尝试更改平面文件源错误输出列的 SSIS 问题

installation - 从命令行传递的 WiX 条件属性不起作用?

syntax-error - VHDL : Error in when conditional