0

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++;
}

私が抱えている問題は、行をリダイレクトしていません。行は、「破棄された出力」を通過するのではなく、「出力」出力でフローを維持します。

4

1 に答える 1

0

ExclusionGroup は両方の出力で同じにする必要があると思います (0 ではなく output.ExclusionGroup=1 にします)。

于 2010-08-10T14:40:35.007 に答える