2

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

控制流

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

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

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

4

1 回答 1

2

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

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

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

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

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

我在一个测试包中做了这个,它工作得很好。

编辑

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

于 2012-10-08T21:32:02.533 回答