如何在数据流中使用if..else基于SSIS中的用户变量值

Age*_*007 6 sql sql-server ssis sql-server-2008

我有一个相当简单的SSIS包,其中包含许多Data Flow任务,每个任务都有多个表的数据流,如下所示:在此输入图像描述

我希望能够基于我使用Script Taskin control-flow 操作的一些用户定义的变量值来执行这些数据流中的每一个.有点像,如果变量(比如BESTELLDRUCK)值true,那么我想执行该表的数据流(源 - 转换 - 目标任务),否则我想跳过这个表并继续到另一个表(例如AKT_FEHLER)在相同的数据流任务中.

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

小智 15

无法禁用或启用转换Data Flow Task.但是,您可以在Control Flow选项卡上启用或禁用数据流任务.

以下是在"控制流"选项卡上执行此操作的一种可能方法:

如果可能,将源 - >目标转换移动到单个数据流任务.如下所示的东西.

控制流

假设您已为每个流创建了变量,以根据某些条件启用或禁用数据流任务.对于这个例子,我硬编码了一些值.

变量

基于变量动态启用或禁用数据流任务.单击数据流任务,然后按F4查看Properties.在"属性"上,单击属性旁边的" 省略号"按钮Expressions.您将看到属性表达式编辑器.

选择" Property禁用"并使用" 省略号"按钮输入表达式!@[User::Enable_BESTELLDRUCK]注意惊叹号,因为变量声明为" 启用",但只有Disable属性可用,您需要执行相反的操作.

属性表达编辑器

使用适当的变量对其他数据流任务重复此过程.运行该包,您将注意到第二个数据流任务未执行,因为该变量Enable_AKT_FEHLER已设置为该值False.

希望有所帮助.

执行

参考:

要在ForEach循环容器中加载具有相同模式的多个表,请查看下面的SO答案.它将数据从MS Access传输到SQL Server.希望,这应该给你一个想法.

如何以编程方式获取SSIS包中的MS Access表列表?