經過一番研究後,事實證明使用_ProcessInputRow()方法是在SSIS腳本組件中處理輸入的正確方法。
我在研究中發現,那是什麼_ProcessInput()可以用來手動遍歷緩衝區並將結果發送到_ProcessInputRow()(但它是沒有必要做,除非喲uhave理由):
public override void Input0_ProcessInput(Input0Buffer Buffer)
{
while (Buffer.NextRow())
{
Input0_ProcessInputRow(Buffer);
}
}
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
//Process one row's worth of data by calling "Row."
}
此外,我發現ProcessInput方法甚至在_ProcessInput和_ProcessinputRow()的更上游使用。 ProcessInput()是一個可以讓你處理原始緩衝區中的數據來作爲輸入方法:
public override void ProcessInput(int InputID, Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer buffer)
{
IDTSInput100 input = ComponentMetaData.InputCollection.GetObjectByID(InputID);
while (buffer.NextRow())
{
for (int columnIndex = 0; columnIndex < input.InputColumnCollection.Count; columnIndex++)
{
IDTSInputColumn100 inputColumn = input.InputColumnCollection[columnIndex];
var test = buffer[columnIndex];
}
}
}
我不知道爲什麼它會永遠需要使用ProcessInput(),但它很高興知道它是可用的。爲了回答我的問題,_ProcessInputRow()是用來處理通過輸入進入的數據的正確方法。