C#からSQLServerデータベースのデータへの変更をリッスンしたい。私が持っているデータが古くなっているかどうかを判断するために使用できる、ある種のリスナーがあることを望んでいました。かなり一般的なシナリオですが、データベースを単にポーリングするだけではない解決策を見つけることができません。
私はLinq-To-SQLを使用してデータにアクセスするため、DataContextオブジェクト、データ変更イベントをリッスンできることを望んでいましたが、見つからないようです。
これが(C#メソッドからSQL Server DBへの)重要な障壁であることを理解しています。これが解決された問題であると私が期待した理由は、これがGUIの一般的な要件であるためです。更新をリッスンできない場合は、GUIに表示されるデータを最新の状態に保つ方法(SQL Serverデータソースに支えられている場合)。
これはGUI作業用ではありませんが、私はその領域から何かを適応させることを期待していました。
C#でSQL Serverデータベース変更イベントをサブスクライブする方法はありますか?
これまで使用したことはありませんが、SQL Serverイベント通知を試したことはありますか?この記事を参照してください: SQL Serverイベント通知入門
SqlDependency
class を探しています。これにより、SQLクエリの結果セットへの変更をリッスンできます。
DataContextは、SQLServerでどのタイプのリスナー機能も提供しません。最善の策は、ポーリングアプリケーションを作成するか、データベースを定期的にポーリングして変更を確認し、メインアプリケーションがリッスンできるイベントを公開する別のスレッドを作成することです。
SQL Server 2008を使用している場合は、非常に便利なChange DataCaptureが組み込まれています。
http://msdn.Microsoft.com/en-us/library/bb522489.aspx
CDCデータを読み取ることができます。
データベースに1行のテーブルを使用して、最後に更新、挿入、または削除されたイベントをカタログ化し、重要な各テーブルにトリガーを作成してこのテーブルを更新し、このテーブルをポーリングして変更を確認します。