我试图从我的脚本组件转换中的 PipelineBuffer 获取列名和索引,并将它们添加到哈希表中。我知道如果我将课程从:更改public class ScriptMain : UserComponent
为ScriptMain : PipelineComponent
并使用以下代码,这是可能的:
public override void ProcessInput(int InputID, Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer Buffer)
{
inputBuffer = Buffer;
hash = new Hashtable();
IDTSInput100 i = ComponentMetaData.InputCollection.GetObjectByID(InputID);
foreach (IDTSInputColumn100 col in i.InputColumnCollection)
{
int colIndex = BufferManager.FindColumnByLineageID(i.Buffer, col.LineageID);
hash.Add(col.Name, colIndex);
}
}
然而; 当我这样做时,我不能再覆盖:public override void Input0_ProcessInputRow(Input0Buffer Row)
因为这在 PipelineComponent 类中不可用,并且我不能再通过简单地调用类似这样的东西来访问我的连接管理器:IDTSConnectionManager100 connMgr = this.Connections.DbConnection;
据我所知,BufferManager 在 UserComponent 类中不可用。有没有办法使用 UserComponent 来实现这一点?