根据条件控制SSIS包中的流量

rvp*_*phx 2 conditional ssis control-flow

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

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

经过大量的突破,我终于发现这是一个并发控制问题,不允许我同时写入excel文件.为了进一步解决这个问题,我在优先约束上使用了表达式来控制是否创建了工作表.但真正的麻烦在于,在创建工作表之后,包将无法同时将数据写入2个不同的工作表.

有没有办法,我可以为DFT分配一个'执行订单'?这就是我正在寻找一个脚本任务的原因,这样当一个特定工作表的计数为0时,它就不起作用,控件移动到另一个分支.

我希望我没有在这里困惑你.但如果我有,我很乐意提供有关这个问题的更多细节.谢谢阅读.

Edm*_*ppe 7

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

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

任务1和2之间的优先约束是布尔值为true的表达式:

显示@DoNorthRegion表达式的优先约束编辑器的屏幕截图

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

四个序列容器的屏幕截图,一个展开以显示内容