【问题标题】:Passing a variable value from Control Flow to Data Flow in SSIS将变量值从控制流传递到 SSIS 中的数据流
【发布时间】:2012-10-08 20:43:49
【问题描述】:

我有一个相当简单的 SSIS 包,我无法成功地将包范围变量的值从控制流传递到数据流任务。考虑下图:

执行 SQL 任务从“机器”列表中获取值。这用于控制一个 ForEach 循环容器,效果很好。接下来,脚本任务执行一些数学运算并将单个数字分配给包作用域变量(整数类型)。我添加了在循环期间弹出的消息框,以便我可以验证此变量的值是否设置正确。

最后一个图标是我想在其中使用变量值的数据流。我有一个简单的脚本任务,它只包含一个消息框,向我显示同一变量的当前值。每次,变量都是我最初在设计器(BIDS)中设置的值。因此,该值不会“传递”到数据流。我已经多次验证变量的名称是正确的(包括区分大小写的值)。

这应该很简单,我对这个问题感到沮丧。我将不胜感激和建议或 cmets。谢谢!

【问题讨论】:

  • 确认您没有在数据流范围内声明相同的变量。你做的是相当标准的操作
  • 感谢您的建议。我设置了一个断点,看来包变量设置正确。我没有看到在数据流中声明的相同变量。只是为了确保,我创建了一个全新的变量,到处替换它并删除了我的原始变量。当我运行它时,我遇到了同样的问题。我想我可能会尝试创建一个小包,以更简单的方式验证这个概念。
  • 尽管提问者最后“感觉自己像个白痴”,但这篇文章说明了有用的故障排除方法,而且这个问题问得很好。

标签: sql-server-2008 ssis business-intelligence


【解决方案1】:

您如何从脚本任务中设置包变量?它应该看起来像这样(c#):

DTS.Variables["testVariable"].Value = "some value";

然后从数据流任务中的脚本组件对其进行测试:

public override void PostExecute()
{
    base.PostExecute();

    MessageBox.Show(Variables.testVariable, "test");
}

我在一个测试包中做了这个,效果很好。

编辑

还要确保将变量添加到脚本任务属性的 ReadWriteVariables 部分。

【讨论】:

  • 真烦人。在我测试了这个概念在一个小的新项目中确实有效之后,我重新阅读了我设置变量值的区域。我在语句中输入了错误的变量名,这导致了我的错误。我觉得自己像个白痴。感谢大家帮我调试这个错字,很抱歉占用您的时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-05
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-19
相关资源
最近更新 更多