我試圖從我的腳本組件轉換中的PipelineBuffer獲取列名和索引,並將它們添加到散列表。我知道如果我改變類從,這是可能的:public class ScriptMain : UserComponent
到ScriptMain : PipelineComponent
和使用此代碼:從SSIS 2012中的腳本組件中的PipelineBuffer獲取列名稱
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來完成此操作?