スクリプト コンポーネントの変換で PipelineBuffer から列名とインデックスを取得しようとしていますが、これは SSIS であり、それらを Hashtable に追加します。クラスを から に変更し、次のコードを使用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 を使用してこれを達成する方法はありますか?