【发布时间】:2016-09-23 09:28:24
【问题描述】:
我有一个关于如何在 SSIS 中设置优先约束的问题。
我的包里有以下流程:
- 执行 SQL 任务返回一个格式为“1111”的字符串值,然后将其存储在名为“data”的变量中
- 关键在于控制要执行的脚本任务 例如,如果值为“1111”,则所有 4 个脚本都将运行。 如果值为“1011”,则脚本 1、3、4 开始运行......你会得到图片
- 脚本在所有情况下都依赖于前一个脚本。
- 约束使用如下表达式计算:例如,对于脚本 2,SUBSTRING(@[User::data], 2,1)=="1"。
问题: 如果其中一个脚本没有运行,那么下一个脚本也不会运行(因为约束永远不会被评估)。例如,对于 data = "1011",脚本 3 和 4 永远不会运行,因为数字 2 永远不会运行...
您知道更好的方法来完成这项工作吗?
将 SQL Server 2008 与 BIDS 结合使用
【问题讨论】:
-
这取决于您可以拥有多少不同的值,但您可以在
SQL task之后使用conditional split。如果这不可能,请编辑您的脚本,以便当值 1011 到达脚本 2 时,它只是将其传递给脚本 3,而不进行任何转换。 -
@DenStudent 条件拆分是一个“数据流”任务元素,而不是“控制流”。你知道我怎样才能达到最终结果吗?我只有这 4 个脚本。
标签: sql-server sql-server-2008 ssis constraints operator-precedence