【问题标题】:How to set value of variable from script task for data flow task如何从脚本任务中为数据流任务设置变量值
【发布时间】:2017-08-16 04:27:46
【问题描述】:

我是 SSIS 新手,正在为多个表创建 IDL(增量数据加载)包。

我的包有执行 SQL 任务,当我从脚本任务设置变量值时它正在工作但是当我尝试从脚本任务中为数据流设置变量值时(oldedb 源)它不工作例如

我的 SSIS 包:

  • Foreachloop 容器

  • 脚本任务循环遍历表的架构并设置 SourceTable=TableName。

  • oledb 源(使用 SourceTable)
  • 查找(查找没有匹配输出)
  • Oldedb 目的地

知道为什么吗?

更新:

【问题讨论】:

  • 您是否将变量指定为脚本任务的读/写?
  • 是的,我这样做了 User::SourceTable in ReadWriteVariables

标签: sql-server ssis business-intelligence


【解决方案1】:

当 SSIS 无法从指定的源中提取元数据信息(列名和数据类型)时,它会从数据源组件中报告此类异常错误。以下是可能的案例和待办事项:

  • 数据源在运行包之前验证,此时 SourceTable 变量不存在值。 ToDo - 为 DataFlow 任务指定 DelayValidation=true,或为 SourceTable 变量设置一些有效的默认值(指向开始时存在的表)
  • SourceVariable 在运行时包含无效的表名。如果您进行了上述更改并且错误仍然存​​在,则会发生这种情况。使用调试器检查其值并分析案例。

【讨论】:

  • 我使用调试器检查脚本任务的值,脚本任务正在​​将值传递给数据流任务,但是我仍然无法在数据流任务中写入包变量,我也设置了 DelayValidation=true。看,如果我使用脚本组件,我只能写入包变量值。
  • 现在我好像明白了。您正在尝试写入脚本转换组件中的包变量,对吗?在这种情况下,您可能会发现这很有帮助 - stackoverflow.com/a/39206880stackoverflow.com/a/32229160
  • 是的,你明白了。我正在使用脚本组件并在数据流任务中设置变量的值似乎我错过了一些东西,因为我不能在 oledb 目标的数据访问模式下使用变量,例如检查我有问题的更新。
  • @shaadi,请参考提供的链接。标准 MS 方式限制您仅在 PostExecute 阶段修改 ReadWrite 变量。另一种方法 - 小心使用 VariableDispenser - 在 PreExecute 锁定变量,在 Row 或 PostExecute 修改,解锁 - 在 PostExecute。
  • 能否请您逐步解释一下如何在运行时为数据流任务中的变量设置值。如果您能找到方法,这将是一个很大的帮助。
猜你喜欢
  • 2019-05-08
  • 1970-01-01
  • 2023-01-09
  • 1970-01-01
  • 1970-01-01
  • 2014-01-26
  • 2013-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多