在进程终止时更新 SSIS 自定义组件中的变量不持久

Update a variable in SSIS Custom component not persistent as the process terminates

我目前正在开发一个 ssis 自定义组件,在设计时我创建了一个用户变量并随时更新它。

现在,当我执行包时,在 PrimeOutput 方法中我成功更新了变量,但是当进程终止时变量不是持久的,我得到的唯一值是旧值。 这是我更新变量的方法:

IDTSVariables100 variables = null;
VariableDispenser.LockOneForWrite(name, ref variables);
variables[name].Value = newValue;
variables.Unlock();

假设你的变量名是MyVar

 VariableDispenser variableDispenser = (VariableDispenser)this.VariableDispenser;
 variableDispenser.LockForWrite("User::myVar");

 IDTSVariables100 vars;
 variableDispenser.GetVariables(out vars);

 // Set the variable
 vars["User::myVar"].Value = newValue;

 // Unlock the variable
 vars.Unlock();

有关更多信息,您可以参考这个有用的链接:

更新 1

看完你的评论"but after the package finish executing, the variable reset to the old value"

默认情况下存储在包文件中的变量值是您在设计包时指定的值(以编程方式或使用visual studio)

此外,如果在脚本中更改变量值,它只会在执行时更改值,并且不能从同​​一 DataFlow Task 中的另一个组件读取新值,当当前 DataFlow Task执行完毕

有用的链接

如果您有兴趣以编程方式编辑包,您可以参考以下链接