トリガーを使用したり、データベースの構造を変更したりせずに、SQL Serverデータベースでテーブルの変更を監視するにはどうすればよいですか?私が好むプログラミング環境は.NETとC#です。
SQL Server 2000 SP4以降をサポートできるようにしたいのですが。私のアプリケーションは、他社製品のボルトオンデータ視覚化です。私たちの顧客ベースは数千にのぼるので、すべてのインストールでサードパーティベンダーのテーブルを変更するという要件を課す必要はありません。
「表への変更」表データへのI平均変化、テーブル構造に変わりはありません。
結局のところ、変更をアプリケーションで定期的にトリガーするのではなく、変更を定期的にチェックする必要があります。
私の要件(トリガーやスキーマの変更なし、SQL Server 2000および2005)を考慮した場合の最善の行動BINARY_CHECKSUM
は、T-SQLで関数を使用することです。私が実装する予定の方法はこれです:
X秒ごとに次のクエリを実行します。
SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*))
FROM sample_table
WITH (NOLOCK);
そして、それを保存された値と比較します。値が変更されている場合は、クエリを使用して行ごとにテーブルを調べます。
SELECT row_id, BINARY_CHECKSUM(*)
FROM sample_table
WITH (NOLOCK);
そして、返されたチェックサムを保存された値と比較します。