如何评估SSIS优先约束?

时间:2015-07-10 14:32:23

标签: sql-server batch-file ssis

enter image description here也许这个问题看起来非常基本和基本,但我需要澄清一下。

在SSIS中,以下约束可用于控制组件执行流程:

  • 逻辑AND。所有约束必须评估为真。
  • 逻辑OR。至少有一个约束必须评估为真。

我有一个非常简单的包用于测试所描述的条件。

进程任务 - 调用返回字符串值和退出代码的批处理文件。

Process Task从批处理文件接收值作为StandardOutputVariable并将其分配给我的用户定义变量User :: BatchExecutionCode

脚本任务 - 用于验证,显示从我的用户变量中获取的值,以便我可以直观地看到并确认期望值已通过

执行SQL任务 - 只需执行SELECT GETDATE()。

我在脚本任务和处理任务之间设置了逻辑AND条件,该任务要求:

  1. 约束 - 任务执行必须“完成”
  2. 表达式 - @BatchExecutionCode ==“0”
  3. 当我执行时,最终“执行SQL”任务之前的两个任务都完成,我得到一个可视消息框,显示我的变量值为“0”,但执行只是在之后停止,并且在评估后从不执行最后一个任务

    有什么问题?根据所述的执行条件,已满足条件。那么究竟如何评估优先约束。

    编辑:为了澄清,在屏幕截图中,@ BatchExecutionCode的值已通过脚本任务传递给User :: Result变量。这就是为什么表达式说@Result ==“0”。无论哪种方式,结果仍然相同

1 个答案:

答案 0 :(得分:0)

唯一的原因应该是@Result不等于" 0",您可以通过脚本任务的后执行断点来确认。

您可以使用以下文章确认此变量中的实际内容。

http://www.jasonstrate.com/2011/01/31-days-of-ssis-using-breakpoints-231/