同期および非同期変換について

Integration Services の同期変換と非同期変換の相違点を理解するには、まず同期変換を理解するのが最も簡単な方法です。同期変換がニーズに合わない場合は、デザインに非同期変換が必要になることがあります。

同期変換

同期変換では、受信した行が処理され、一度に 1 行ずつデータ フローに渡されます。出力は入力と同期しています。つまり、出力は入力と同時に発生します。したがって、特定の行を処理するために、変換でデータ セット内の他の行の情報が必要になることはありません。実際の実装では、行はコンポーネント間で渡されるときにバッファにグループ化されますが、これらのバッファはユーザーに対して透過的であるため、各行が個別に処理されると見なすことができます。

同期変換の例としては、データ変換の変換があります。受信した各行について、指定した列の値を変換し、その過程で行を送信します。不連続の各変換操作は、データ セット内の他のすべての行とは無関係です。

Integration Services のスクリプトとプログラミングでは、コンポーネントの入力の ID を参照し、その ID をコンポーネントの出力の SynchronousInputID プロパティに割り当てることによって、同期変換を指定します。これにより、入力内の各行を処理し、各行を指定された出力に自動的に送信するように、データ フロー エンジンに指示します。各行を各出力に送信する場合、データを出力するための追加のコードを記述する必要はありません。ExclusionGroup プロパティを使用して、条件分割変換のように行を特定の出力グループのみに送信するように指定するには、DirectRow メソッドを呼び出して、各行に対して適切な送信先を選択する必要があります。エラー出力がある場合は、DirectErrorRow を呼び出して、問題のある行を既定の出力ではなくエラー出力に送信する必要があります。

非同期変換

各行を他のすべての行と無関係に処理できない場合、デザインに非同期変換が必要になることがあります。つまり、各行を処理するときにデータ フローに各行を渡すことはできませんが、データを非同期で、つまり入力とは異なるタイミングで出力する必要がある場合です。たとえば、次のシナリオでは非同期変換が必要です。

  • コンポーネントが、処理を実行する前にデータの複数のバッファを取得する必要がある場合。たとえば、並べ替え変換です。この変換では、コンポーネントは 1 つの操作ですべての行を処理する必要があります。

  • コンポーネントが、複数の入力の行を結合する必要がある場合。たとえば、マージ変換です。この変換では、コンポーネントは各入力の複数の行を調べてから、並べ替えた順序でマージする必要があります。

  • 入力行と出力行の間に 1 対 1 の対応がない場合。たとえば、集計変換です。この変換では、コンポーネントは出力に行を追加し、計算された集計値を保持する必要があります。

Integration Services のスクリプトとプログラミングでは、コンポーネントの出力の SynchronousInputID プロパティに 0 の値を割り当てることによって、非同期変換を指定します。これにより、出力に各行を自動的に送信しないようにデータ フロー エンジンに指示します。次に、非同期変換の出力用に作成される新しい出力バッファに各行を追加することによって、各行を適切な出力に明示的に送信するためのコードを記述する必要があります。

注意注意

変換元コンポーネントはデータ ソースから読み取った各行を出力バッファに明示的に追加する必要もあるため、変換元では変換を非同期出力のように表示します。

各入力行を出力に明示的にコピーすることによって、同期変換をエミュレートする非同期変換を作成することもできます。この方法では、列の名前を変更したり、データ タイプやフォーマットを変換したりできます。ただし、この方法を使用するとパフォーマンスは低下します。Copy Column や Data Conversion などの組み込みの Integration Services コンポーネントを使用することによって、より高いパフォーマンスで同じ結果を得ることができます。

Integration Services のアイコン (小) 最新の Integration Services の入手

マイクロソフトが提供する最新のダウンロード、アーティクル、サンプル、ビデオ、およびコミュニティで選択されたソリューションについては、MSDN または TechNet の Integration Services のページを参照してください。

これらの更新が自動で通知されるようにするには、ページの RSS フィードを購読します。