SSIS 自定义转换接收变量

SSIS Custom transformation receive variable

我正在用 C# 创建自定义转换以用于 SSIS。我已经能够创建和添加自定义组件并从数据库源接收和更改数据,但我需要更多数据才能在日志中注册 table。此数据只能通过变量传递,但我找不到关于如何将 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 我可以在自定义组件像原始 "script component" 一样运行之前更改值。

好吧,我进行了更多研究,偶然发现了一个答案: 似乎要访问 SSIS public 变量,我们必须使用 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() 我们能够搜索我们的变量并访问那里的值。