我在SSIS包我执行SQL任务一个简单的SQL查询,选择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());
}
好消息是,你是正确的,据我可以看到所做的一切。 我重新创建你的包,我从我的查询的预期值。
我也能促使你的情况 - 正确的值是从我的查询返回的,但我的包产生“不正确的结果。”
这个问题,我希望是,你必须在不同的范围定义的两个BININDEX变量。 我原来的设想是包范围的一个包含值-1和你有一个变量范围限定为“执行SQL任务”使用相同的名称。 默认行为是创建一个变量作用域到当前具有焦点的对象。 这就改变了顺便说一下,2012年发布的SQL Server。
作为您的图片显示的123包范围的变量设计时间值的可能性也存在,你有BININDEX同名的脚本任务定义的变量。 局部变量将覆盖全局范围变量
点击你的脚本任务,希望你会看到那里定义像上面一个BININDEX。 否则,我认为这个问题是在你的包的地方,你有冲突BININDEX变量。 您可以尝试通过Package Explorer中苦读寻找,你必须与列出的两个同名变量的实例。
我需要离开,但如果没有的是这样的话,在执行SQL任务添加PostExecute断点,并在您的本地窗口看(不变量为只反映设计时间值)。 扩展变量,你应该能够看到BININDEX的价值。 对不对呢?