SSIS の PipelineComponent から継承するカスタム コンポーネントを開発しています。
これはコードの「ProvideComponentProperties」スニペットです。
IDTSOutput90 output = ComponentMetaData.OutputCollection.New();
output.Name = "Output";
output.SynchronousInputID = input.ID;
output.ExclusionGroup =0;
m_DefaultOutputId = output.ID;
IDTSOutput90 discardedOutput = ComponentMetaData.OutputCollection.New();
discardedOutput.Name = "Discarded Output";
discardedOutput.SynchronousInputID = output.SynchronousInputID;
discardedOutput.ExclusionGroup = 1;
//I don't want it to be an output
//discardedOutput.IsErrorOut = true;
m_DiscardedOutputId = discardedOutput.ID;
そして、プロセス入力で私はこれを持っています:
while (buffer.NextRow())
{
bool discarded = true;
if (//Discard condition)
{
for (int columnIndex = 0; columnIndex < input.InputColumnCollection.Count; columnIndex++)
{
//Write to buffer
}
discarded = false;
}
if (discarded)
{
buffer.DirectRow(discardedOutput.ID);
}
rowIndex++;
}
私が抱えている問題は、行をリダイレクトしていません。行は、「破棄された出力」を通過するのではなく、「出力」出力でフローを維持します。