SSIS自定义转换接收变量

我正在C#中创建一个用于SSIS的自定义转换。 我已经能够创建和添加自定义组件并从数据库源接收和更改数据,但我需要更多数据才能在日志表中注册。 这些数据只能与变量一起传递,但我找不到如何向我的组件添加readonlyvariable的良好解释。

我曾尝试使用IDTSVa​​riable100VariableDispenser,但我无法理解如何使用。

  public override void ProvideComponentProperties() { base.ProvideComponentProperties(); base.RemoveAllInputsOutputsAndCustomProperties(); VariableDispenser varDispenser = this.VariableDispenser(); IDTSVariable100 vr = this.VariableDispenser.GetVariables(); IDTSInput100 input = this.ComponentMetaData.InputCollection.New(); input.Name = "Input_B"; IDTSOutput100 output=this.ComponentMetaData.OutputCollection.New(); output.Name = "Output_B"; // the output is synchronous with the input output.SynchronousInputID = input.ID; } 

基本上我想定义readonlyvariables ,我可以在自定义组件运行之前改变值,就像原始的“脚本组件”一样。

好吧,我研究了一点,偶然发现了答案:似乎要访问SSIS公共变量,我们必须使用ProcessInput方法中的代码获取它们:

 var dimSrcId =""; IDTSVariables100 variables = null; this.VariableDispenser.LockForRead("User::dimSrcId"); this.VariableDispenser.GetVariables(out variables); dimSrcId = variables["User::dimSrcId"].Value.ToString(); variables.Unlock(); 

通过使用VariableDispenser.LockForRead(),我们能够搜索变量并访问其中的值。