変更データ キャプチャと変更の追跡の比較

SQL Server 2008 では、データベース内のユーザー テーブルに対して行われた DML の変更 (挿入操作、更新操作、および削除操作) をアプリケーションで特定するための 2 つの追跡機能が導入されています。これらの機能が導入される前は、カスタムの追跡メカニズムをアプリケーションに実装する必要がありました。そのようなカスタムのメカニズムでは、多くの場合、追跡対象テーブルでスキーマを変更したり、トリガを使用したりする必要がありました。変更データ キャプチャと変更の追跡では、どちらを使用した場合でも、ソースでスキーマを変更したり、トリガを使用したりする必要はありません。

変更データ キャプチャ

変更データ キャプチャでは、DML の変更が行われたという事実と変更された実際のデータの両方がキャプチャされ、ユーザー テーブルの変更情報の履歴が提供されます。変更は、非同期プロセスを使用してトランザクション ログを読み取ることによってキャプチャされます。これは、システムへの影響が少ない方法です。

次の図に示すように、ユーザー テーブルに対して行われた変更は、対応する変更テーブルにキャプチャされます。これらの変更テーブルには、時間の経過に伴う変更の履歴が表示されます。SQL Server の変更データ キャプチャ関数を使用して、変更データを簡単かつ体系的に利用できます。

変更データ キャプチャの概念図

変更の追跡

変更の追跡では、テーブル内の行が変更されたという事実がキャプチャされますが、変更されたデータはキャプチャされません。この機能を使用すると、変更された行をアプリケーションで特定し、最新の行データについてはユーザー テーブルから直接取得することができます。したがって、変更の追跡で確認できる履歴の情報は変更データ キャプチャと比較すると限定されますが、変更データがキャプチャされないため、履歴情報が必要ではないアプリケーションではストレージ オーバーヘッドがはるかに少なくて済みます。変更は、同期追跡メカニズムを使用して追跡されます。これは、DML 操作のオーバーヘッドを最小限に抑えるように設計されています。

次の図は、変更の追跡を使用すると効果的な同期のシナリオを示しています。このシナリオのアプリケーションでは、テーブルの前回の同期後に変更されたすべてのテーブル行の現在の行データのみが必要です。同期メカニズムを使用して変更が追跡されるため、アプリケーションで双方向同期を実行して、発生する可能性がある競合を確実に検出できます。

変更の追跡の概念図

変更データ キャプチャと変更の追跡の機能の違い

次の表に、変更データ キャプチャと変更の追跡の機能の違いを示します。変更データ キャプチャの追跡メカニズムでは、非同期キャプチャによりトランザクション ログから変更がキャプチャされ、DML 操作後に変更を利用できます。変更の追跡の追跡メカニズムでは、同期追跡により DML 操作に即して変更が追跡され、すぐに変更情報を利用できます。

機能

変更データ キャプチャ

変更の追跡

追跡される変更

 

 

DML の変更

あり

あり

追跡される情報

 

 

履歴データ

あり

なし

列が変更されたかどうか

あり

あり

DML の種類

あり

あり

関連項目

概念

その他の技術情報