これは広範囲にわたるトピックになる可能性があります。まず第一に:使用されているSQL Serverのバージョンは何ですか?
SQL 2008を使用している場合は、変更データキャプチャが最適なツールです。この新機能を使用すると、SQL 2008内のデータベースに加えられたすべての変更を監視できます。これには、DDLの変更とデータの変更が含まれます。ここで紹介を確認してください。
古いバージョンのSQL2008を使用していて、データベースのDDLを変更できる場合は、オプション3が(一度説明したものの)選択肢の1つになります。ただし、トランザクションがロールバックした場合や、一括挿入時にトリガーが非アクティブ化された場合など、考慮すべき点が他にもあるため、お勧めしません。
これらすべての場合にソリューションを適切に機能させることは、静かな挑戦です。
もう1つの方法は、トランザクションログファイルを監視することです。独自のログ形式に関するドキュメントがほとんどないため、この方法は断然最善ですが、最も複雑な方法でもあります。また、SQLServerの特定のバージョンにバインドされています。これにより、選択したデータベースの影響を監視できなくなります。
さらに別のアプローチは、監視対象のデータのコピーを作成し、違いがあるかどうかを定期的にチェックすることです。これには、ソースデータベースに変更を加える必要がないという利点があります。トランザクションや一括挿入の問題を取り除くだけでなく。最新の次の監視実行以降、変更を発見できるようになります。
監視対象のテーブルに対してプライマリインデックスの連続読み取りのみが必要になるため、パフォーマンスへの影響はかなり最小限に抑えられます。そして、これはデータベースと対話するための最も最適化された方法です。ただし、このアプローチにはかなりの開発努力が必要になります。これがここ数年以来の私の主な焦点なので、私は知る必要があります。ここをチェックしてください;)
(リンクが問題ないことを願っています。この場合はトピックにあるので、それ以外の場合は削除します)