我正在尝试使用我在SSIS中的表达式内的循环中更新的变量。我将努力尽可能清楚。在到达最后一个数据流任务(我有一个ODBC源)之前,我在[ODBC Source]中使用的变量(Return)中获得了一些值。[SqlCommand],第二个脚本任务我可以检查变量是否以我需要的方式更新。问题是在数据流中表达式考虑了这个变量,但是我选择了默认值('')。
在第一个脚本任务中,我正在更新变量:
Dts.Variables [“Return”]。Value = Dts.Variables [“Return”]。值+标识;
所以,我不知道我是否错过了之前的指示或执行此控制流程可能发生的事情
答案 0 :(得分:1)
“变量”窗口不会在程序包执行结束时显示变量的值。您需要设置断点并使用本地窗口在变量之前和之后“捕获”变量的值。
断点示例
我有一个包含单个脚本任务的包。
里面的代码就是这个......
new string strReturn = "NewValue";
public void Main()
{
// TODO: Add your code here
Dts.Variables["Return"].Value = strReturn;
Dts.TaskResult = (int)ScriptResults.Success;
}
代码将我的SSIS变量设置为等于NewValue。要捕获此变量值,我将设置断点。要设置断点,请右键单击“脚本任务”,然后选择“编辑断点”。
设置Pre和PostExecute断点。保存然后执行包。当它到达断点时,它会暂停。第一个暂停是PreExecute事件,就在脚本即将执行之前。在此暂停期间,您可以在本地窗口中输入变量的名称。
您将看到该值尚未更改。按继续按钮移动到下一个断点PostExecute。现在,脚本任务已经执行。检查本地窗口,您应该看到值已更改!
请注意,在每个中,左上方的“变量”窗口都不会显示更新的值。它总是显示''。您必须使用断点来查看变量值的变化。希望这可以帮助您调试包!