我有一个 SSIS 包,可以同时运行多个数据流任务。
每个数据流任务都放置在一个序列容器内。
在运行数据流任务之前,脚本任务用于检查需要运行哪些数据流任务。
每个数据流任务还有一个相关变量,由脚本任务设置为真或假。数据流任务使用变量值作为禁用表达式属性。
最初运行时,该过程按预期工作。那些具有变量 value = true 的任务会运行,而那些具有变量 value = false 的任务不会运行。
但是,下次我运行包时,所有数据流任务最初都被禁用(可能是因为相关变量设置为 false)。
但即使在运行时将某些变量设置为 true,任务仍然处于禁用状态。禁用表达式似乎没有获取最新的变量值。(在 Watch 窗口中,我可以看到变量值已正确更新)
我尝试在每个任务上设置 ' DelayValidation ' = true但没有改变。
为什么会发生这种情况?
我会在包的开头添加一个脚本任务,或者在有问题的任务之前添加一个脚本任务。
脚本任务应该:
通过这种方式,您可以在您希望的包的任何阶段查看变量,并找出是否有其他任务使它们改变值。这是一种“快速观察”风格的调试,但带有 MessageBox。
只需确保在部署之前不要让 messageBox 命令运行,因为您的包将失败。