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のどれかが発生したことは分かるが、やはりそれだけだった。クエリ結果を画面に表示している場合などで、常にクエリ結果を最新に保つ目的に特化していると分かった。
どの行に変更があったのかを知る方法は標準ではなさそう。このライブラリを使うのが良いらしい。まだ試していない。
How to monitor SQL Server table changes by using c#? - Stack Overflow