我有一个非常简单的SSIS包,其中包含许多Data Flow任务,每个任务都有多个表的数据流,如下所示:

我希望能够基于我在控制流中使用Script Task操纵的一些用户定义的变量值来执行这些数据流中的每一个。像这样,如果变量(例如BESTELLDRUCK)的值为true,那么我想执行该表的数据流(源转换目标任务),否则我想跳过该表并继续执行另一个表(例如AKT_FEHLER )在同一数据流任务中。

我怎样才能做到这一点?提前致谢。

最佳答案

无法禁用或启用Data Flow Task中的转换。但是,您可以在Control Flow选项卡上启用或禁用数据流任务。
这是在“控制流”选项卡上执行此操作的一种可能方法:
如果可能,将源->目标转换移动到单独的数据流任务。如下所示。

假设您已经为每个流创建了变量,以根据某种条件启用或禁用“数据流任务”。对于此示例,我已经对一些值进行了硬编码。

根据变量动态启用或禁用数据流任务。单击数据流任务,然后按 F4 以查看Properties。在属性上,单击Expressions属性旁边的椭圆按钮。您将看到属性表达式编辑器。
选择Property Disable,然后使用 Ellipsis 按钮输入表达式 !@[User::Enable_BESTELLDRUCK] 请注意感叹号,因为该变量已声明为Enable,但只有Disable属性可用,您需要执行相反的操作。

对具有适当变量的其他数据流任务重复该过程。运行该软件包,您将注意到第二个数据流任务未执行,因为变量Enable_AKT_FEHLER设置为值False
希望能有所帮助。

引用:
要在ForEach Loop容器中加载具有相同架构的多个表,请查看下面的SO答案。它将数据从MS Access传输到SQL Server。希望这应该给您一个想法。
How do I programmatically get the list of MS Access tables within an SSIS package?

关于sql - 如何基于SSIS中的用户变量值在数据流中使用if..else,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14709481/

10-13 07:50
查看更多