変更データ キャプチャと変更の追跡の比較
SQL Server 2008 では、データベース内のユーザー テーブルに対して行われた DML の変更 (挿入操作、更新操作、および削除操作) をアプリケーションで特定するための 2 つの追跡機能が導入されています。これらの機能が導入される前は、カスタムの追跡メカニズムをアプリケーションに実装する必要がありました。そのようなカスタムのメカニズムでは、多くの場合、追跡対象テーブルでスキーマを変更したり、トリガを使用したりする必要がありました。変更データ キャプチャと変更の追跡では、どちらを使用した場合でも、ソースでスキーマを変更したり、トリガを使用したりする必要はありません。
変更データ キャプチャ
変更データ キャプチャでは、DML の変更が行われたという事実と変更された実際のデータの両方がキャプチャされ、ユーザー テーブルの変更情報の履歴が提供されます。変更は、非同期プロセスを使用してトランザクション ログを読み取ることによってキャプチャされます。これは、システムへの影響が少ない方法です。
次の図に示すように、ユーザー テーブルに対して行われた変更は、対応する変更テーブルにキャプチャされます。これらの変更テーブルには、時間の経過に伴う変更の履歴が表示されます。SQL Server の変更データ キャプチャ関数を使用して、変更データを簡単かつ体系的に利用できます。
変更の追跡
変更の追跡では、テーブル内の行が変更されたという事実がキャプチャされますが、変更されたデータはキャプチャされません。この機能を使用すると、変更された行をアプリケーションで特定し、最新の行データについてはユーザー テーブルから直接取得することができます。したがって、変更の追跡で確認できる履歴の情報は変更データ キャプチャと比較すると限定されますが、変更データがキャプチャされないため、履歴情報が必要ではないアプリケーションではストレージ オーバーヘッドがはるかに少なくて済みます。変更は、同期追跡メカニズムを使用して追跡されます。これは、DML 操作のオーバーヘッドを最小限に抑えるように設計されています。
次の図は、変更の追跡を使用すると効果的な同期のシナリオを示しています。このシナリオのアプリケーションでは、テーブルの前回の同期後に変更されたすべてのテーブル行の現在の行データのみが必要です。同期メカニズムを使用して変更が追跡されるため、アプリケーションで双方向同期を実行して、発生する可能性がある競合を確実に検出できます。
変更データ キャプチャと変更の追跡の機能の違い
次の表に、変更データ キャプチャと変更の追跡の機能の違いを示します。変更データ キャプチャの追跡メカニズムでは、非同期キャプチャによりトランザクション ログから変更がキャプチャされ、DML 操作後に変更を利用できます。変更の追跡の追跡メカニズムでは、同期追跡により DML 操作に即して変更が追跡され、すぐに変更情報を利用できます。
機能 |
変更データ キャプチャ |
変更の追跡 |
---|---|---|
追跡される変更 |
|
|
DML の変更 |
あり |
あり |
追跡される情報 |
|
|
履歴データ |
あり |
なし |
列が変更されたかどうか |
あり |
あり |
DML の種類 |
あり |
あり |