我有一个非常简单的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/