sql - 如何根据SSIS中的用户变量值在数据流中使用if..else

标签 sql sql-server sql-server-2008 ssis

我有一个相当简单的 SSIS 包,其中包含许多数据流任务,每个任务都有多个表的数据流,如下所示:enter image description here

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

我该怎么做?提前致谢。

最佳答案

无法数据流任务内禁用或启用转换。不过,您可以在控制流选项卡上启用或禁用数据流任务。

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

如果可能,将源 --> 目标转换移至单独的数据流任务。如下所示。

Control Flow

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

Variables

根据变量动态启用或禁用数据流任务。单击数据流任务并按 F4 查看属性。在“属性”上,单击“表达式”属性旁边的“省略号”按钮。您将看到属性表达式编辑器。

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

Property Expression Editor

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

希望有帮助。

Execution

引用:

要在 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/

相关文章:

mysql - 先复制然后更改mysql中复制数据的ID

java - Hibernate - 无法加载请求的类 : org. mariadb.jdbc.Driver

sql - Oracle 中 Order By 子句中 to_number 的不同结果

javascript - 在nodejs中使用mssql(插入行的函数)

c# - nvarchar(max) 和 sql express 2005 的流畅 NHibernate 问题

sql - 在一个表中有不同用户的记录 - SQL Server

sql - 将 NVARCHAR 转换为货币值

对给定数据进行循环的 SQL 查询

sql - 如何在 COUNT 聚合中包含 "zero"/"0"结果?

sql-server - MSSQL 2008 - 只选择一种方式或路线