SQL Serverの変更検出のメモ

SQL Serverで特定のテーブルに変更が発生したことを検出して色々したい。できれば、どの行が追加/編集/削除されたかが欲しい。

まずクエリ通知というのが見つかる。クエリの結果に変更がある場合に通知してくれるが、どの行に変更があったのかは分からない代物。ともかく試してみる。

SQL Server のクエリ通知 - ADO.NET | Microsoft Docs

手順はここに説明があるが、

SqlDependency を使用した変更の検出 - ADO.NET | Microsoft Docs

詳細な手順はここが参考になる。

Using SqlDependency To Monitor SQL Database Changes - C# Tutorials | Dream.In.Code

OnChangeイベントは一度しか発生しないらしい。

c# - SQLDependency_OnChange-Event fires only one single Time - Stack Overflow

Delete/Insert/Updateのどれかが発生したことは分かるが、やはりそれだけだった。クエリ結果を画面に表示している場合などで、常にクエリ結果を最新に保つ目的に特化していると分かった。

どの行に変更があったのかを知る方法は標準ではなさそう。このライブラリを使うのが良いらしい。まだ試していない。

GitHub - christiandelbianco/monitor-table-change-with-sqltabledependency: Get SQL Server notification on record table change

How to monitor SQL Server table changes by using c#? - Stack Overflow