SSIS 自定义转换接收变量
SSIS Custom transformation receive variable
我正在用 C# 创建自定义转换以用于 SSIS。我已经能够创建和添加自定义组件并从数据库源接收和更改数据,但我需要更多数据才能在日志中注册 table。此数据只能通过变量传递,但我找不到关于如何将 readonlyvariable
添加到我的组件的很好的解释。
我尝试过使用 IDTSVariable100 和 VariableDispenser 但我不知道如何使用。
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() 我们能够搜索我们的变量并访问那里的值。
我正在用 C# 创建自定义转换以用于 SSIS。我已经能够创建和添加自定义组件并从数据库源接收和更改数据,但我需要更多数据才能在日志中注册 table。此数据只能通过变量传递,但我找不到关于如何将 readonlyvariable
添加到我的组件的很好的解释。
我尝试过使用 IDTSVariable100 和 VariableDispenser 但我不知道如何使用。
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() 我们能够搜索我们的变量并访问那里的值。