【问题标题】:SSIS Custom transformation receive variableSSIS自定义转换接收变量
【发布时间】:2015-11-20 08:35:27
【问题描述】:

我正在 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,以便在我的自定义组件像原始“脚本组件”一样运行之前更改该值。

【问题讨论】:

    标签: c# variables ssis global-variables custom-component


    【解决方案1】:

    好吧,我进行了更多研究并偶然发现了一个答案: 似乎要访问 SSIS 公共变量,我们必须使用 ProcessInput Method 上的代码来获取它们:

    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(),我们能够搜索我们的变量并访问那里的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      • 2013-01-01
      • 2011-07-09
      相关资源
      最近更新 更多