我有一个相当简单的 SSIS 包,其中包含许多数据流
任务,每个任务都有多个表的数据流,如下所示:
我希望能够根据一些用户定义的变量值来执行每个数据流,我在控制流中使用脚本任务
操作这些变量值。例如,如果变量(例如 BESTELLDRUCK)值为 true
,那么我想执行此表的数据流(源转换目标任务),否则我想跳过此表并继续处理同一数据流任务中的另一个表(例如 AKT_FEHLER)。
我该怎么做?提前致谢。
最佳答案
您无法在数据流任务
内禁用或启用转换。不过,您可以在控制流
选项卡上启用或禁用数据流任务。
以下是在“控制流”选项卡上执行此操作的一种可能方法:
如果可能,将源 --> 目标转换移至单独的数据流任务。如下所示。
假设您已为每个流创建了变量,以根据某些条件启用或禁用数据流任务。对于此示例,我对一些值进行了硬编码。
根据变量动态启用或禁用数据流任务。单击数据流任务并按 F4 查看属性
。在“属性”上,单击“表达式”属性旁边的“省略号”按钮。您将看到属性表达式编辑器。
选择属性
禁用并使用省略号按钮输入表达式!@[User::Enable_BESTELLDRUCK]
请注意感叹号,因为该变量被声明为 Enable,但只有 Disable
属性可用,您需要执行相反的操作。
使用适当的变量对其他数据流任务重复该过程。运行该包,您会注意到第二个数据流任务未执行,因为变量 Enable_AKT_FEHLER
设置为值 False
。
希望有帮助。
引用:
要在 ForEach 循环容器中加载具有相同架构的多个表,请查看下面的答案。它将数据从 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/