好吧,我的问题与此非常相似,但答案对我不起作用:如何在自定义 SSIS 组件中创建目标列?
我正在构建一个自定义 SSIS 目标组件,以将一些数据(姓名)上传到我的 Web 服务(假设没有其他现有方法可以做到这一点)。
假设用户正在使用 OLE DB 源读取包含“名字”和“姓氏”列的 SQL 表,并将此源组件连接到我的自定义目标组件。
**如何允许用户将源组件的输出列(本例中的名字和姓氏)映射到我的输入列(姓名和姓氏),以便我可以在 ProcessInput 方法中跟踪它们? **
这是我用来创建外部列的代码,但正如您所看到的,这些列没有显示在映射选项卡中的任何位置。
public override void ProvideComponentProperties()
{
// Reset the component.
RemoveAllInputsOutputsAndCustomProperties();
ComponentMetaData.RuntimeConnectionCollection.RemoveAll();
IDTSInput100 input = ComponentMetaData.InputCollection.New();
input.Name = "Input";
IDTSExternalMetadataColumn100 externalNameColumn = input.ExternalMetadataColumnCollection.New();
externalNameColumn.Name = "Name";
externalNameColumn.Description = "The name of the customer";
IDTSExternalMetadataColumn100 externalSurnameColumn = input.ExternalMetadataColumnCollection.New();
externalSurnameColumn.Name = "Surname";
externalSurnameColumn.Description = "The surname of the customer";
IDTSRuntimeConnection100 connection = ComponentMetaData.RuntimeConnectionCollection.New();
connection.Name = "MyConnectionManager";
}
好吧,我终于解决了,非常简单。
映射应该在数据流中的前一个组件中完成,而不是在目标组件中完成!
只需双击上一个组件(连接到自定义目标组件的组件)并在列映射选项卡中设置您的首选映射。
就这么简单。