2

在此处输入图像描述

我在 ssis 包中的 Execute sql 任务中有一个简单的 sql 查询,SELECT MAX(binindex) FROM dbo.myTable

我需要将此最大索引存储到一个变量中,然后将其传递给脚本任务并显示它,我已经声明了一个包变量,包编译,但是每次都显示-1,我不知道我在做什么错了,任何帮助将不胜感激!

在此处输入图像描述

public void Main(){
    //TODO: Add your code here
    Dts.TaskResult = (int)ScriptResults.Success;
    MessageBox.Show(Dts.Variables["User::BININDEX"].Value.ToString());
}

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

3

好消息是,据我所知,您所做的一切都是正确的。我重新创建了您的包,并从查询中获得了预期值。

基本包

我也可以推断出你的情况——从我的查询中返回了正确的值,但我的包产生了“不正确的结果”。

负一

我希望,问题在于您在不同的范围内定义了两个 BININDEX 变量。我最初的假设是包范围的一个包含一个值 -1 并且您有一个范围为同名的“执行 SQL 任务”的变量。默认行为是创建一个范围为当前具有焦点的对象的变量。顺便说一句,这在 SQL Server 2012 版本中发生了变化。

由于您的图片显示包作用域变量的设计时值为 123,因此您也有可能在脚本任务上定义了同名 BININDEX 的变量。局部变量将覆盖全局范围的变量

变量窗口

单击您的脚本任务,希望您会看到像上面那样定义的 BININDEX。否则,我认为问题出在你的包中,你有冲突的 BININDEX 变量。您可以尝试通过包资源管理器查找一个实例,其中列出了两个具有相同名称的变量。

包浏览器

我需要离开,但如果不是这种情况,请在执行 SQL 任务上添加一个 PostExecute 断点并查看您的本地窗口(不是变量,因为它只反映设计时值)。展开变量,您应该能够看到 BININDEX 的值。那里正确吗?

在此处输入图像描述

于 2012-06-11T22:07:27.343 回答