我有一个相当简单的SSIS包,其中包含许多数据流任务,每个任务都有多个表的数据流,如下所示:
我希望能够基于我在控制流中使用脚本任务操作的一些用户定义的变量值来执行这些数据流中的每一个.有点像,如果变量(比如BESTELLDRUCK)值为真,那么我想执行该表的数据流(源 – 转换 – 目标任务),否则我想跳过这个表并继续到另一个表(例如AKT_FEHLER) )在相同的数据流任务中.
我怎样才能做到这一点?提前致谢.
解决方法
您无法在数据流任务中禁用或启用转换.但是,您可以在“控制流”选项卡上启用或禁用“数据流任务”.
以下是在“控制流”选项卡上执行此操作的一种可能方法:
如果可能,移动源 – >目标转换到单个数据流任务.如下所示的东西.
假设您已为每个流创建了变量,以根据某些条件启用或禁用数据流任务.对于这个例子,我硬编码了一些值.
基于变量动态启用或禁用数据流任务.单击“数据流任务”,然后按F4查看“属性”.在“属性”上,单击“表达式”属性旁边的“省略号”按钮.您将看到属性表达式编辑器.
选择属性禁用并使用省略号按钮输入表达式!@ [User :: Enable_BESTELLDRUCK]注意惊叹号,因为变量声明为启用但只有Disable属性可用,您需要执行相反的操作.
使用适当的变量对其他数据流任务重复此过程.运行包,您将注意到第二个数据流任务未执行,因为变量Enable_AKT_FEHLER设置为值False.
希望有所帮助.
参考:
要在ForEach循环容器中加载具有相同模式的多个表,请查看下面的SO答案.它将数据从MS Access传输到sql Server.希望,这应该给你一个想法.
How do I programmatically get the list of MS Access tables within an SSIS package?