2

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

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

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

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

我希望我没有在这里混淆你。但是,如果我有,我很乐意提供有关此问题的更多详细信息。谢谢阅读。

4

1 回答 1

7

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

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

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

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

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

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

于 2012-12-23T18:42:01.723 回答