【发布时间】:2023-03-19 14:55:01
【问题描述】:
我在 foreach 循环中有一个脚本任务应该写入一个变量。
Dts.Variables["Variable"].Value = "Hello";
对我来说看起来不错,但是变量似乎从未被写入。变量名拼写正确,在脚本任务配置中设置为ReadWrite。
该变量具有包范围,是否存在与它相关的可能影响它的循环?我也尝试过使用 Dts.VariableDispencer。
更新: 我有一个 int,我也写了一个 int,它确实写得很好。除了不同的数据类型,方法是相同的。任何想法为什么我不能写一个字符串?
【问题讨论】:
-
Looks fine to me, however the variable doesn't ever seem to be written to.- 你是怎么确认的?如果变量具有包范围,则没有理由不写入变量。 -
变量在循环外恢复为原始值。我有一个电子邮件任务,将变量的内容作为消息正文通过电子邮件发送
-
你确定这个变量已经被设置了吗?尝试放置多个
MessageBox.Show()函数以查看是否已设置。此外,您可以调试包并在“观察”窗口中循环查看变量的值。 -
这曾经让我感到困惑 - 确保您没有创建任何与包级别变量同名的组件级别变量。如果存在同名的组件级变量,它们将被写入而不是包级变量(然后在后续步骤中将无法访问!)。
标签: sql-server ssis sql-server-2012 ssis-2012