【问题标题】:Update and use a Variable in an expression in SSIS在 SSIS 的表达式中更新和使用变量
【发布时间】:2015-05-29 09:16:11
【问题描述】:

我正在尝试使用我在 SSIS 中的表达式内的循环中更新的变量。我会尽量说清楚。在到达最后一个数据流任务(我有一个 ODBC 源)之前,我在变量(返回)中获取了一些值,我将在 [ODBC 源].[SqlCommand] 中使用第二个脚本任务我可以检查变量是否以我需要的方式更新。问题在于,在数据流中,表达式考虑了这个变量,但使用了我选择的默认值 ('')。

在第一个脚本任务中,我正在更新变量:

Dts.Variables["Return"].Value = Dts.Variables["Return"].Value + identif;

所以,我不知道我是否错过了先前的指示,或者执行此控制流时可能会发生什么

【问题讨论】:

  • 你是不是根据上面的截图对@[User::Return] 的评估?

标签: variables ssis expression


【解决方案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。现在,脚本任务已经执行。检查本地窗口,您应该会看到值已更改!

请注意,在所有这些中,左上角的“变量”窗口从不显示更新的值。它总是显示 '' 。您必须使用断点来查看变量值的变化。希望这可以帮助您调试您的包!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多