データベースで動作し、毎月新しいデータベースを作成する C# アプリケーションを作成しています。
古いデータベースは、SQL Management Studio またはその他の方法でユーザーがデタッチおよびアタッチできます。
SQLサーバーイベント(存在する場合)をリッスンし、データベースが接続または切断されたときにキャッチする方法を見つけようとしています。
操作が発生するattach
と、アプリケーションはデータベースをチェックし、テーブル スキーマを最新バージョンに更新する必要があります。
私は SQL SMO も学んでおり、このライブラリがイベント リスナーを提示してくれると考えていましたが、それらを見つけることができませんでした。
もちろん、数秒ごとに新しいデータベースをチェックするスレッドまたはタイマーを実行することもできます。私はそれを試し、実行SQLServer.Databases.Refresh()
するとデータベースリストが更新され、それを繰り返して作業できます。
しかし、これを達成するためのより簡単な方法はありますか? OnDatabaseAttach
どこかでみたいなイベントがあるかも?
編集
私を正しい方向に導いてくれたelsausmcに感謝します。少し検索してServerEventSet
、このページにたどり着きました。
簡単なテストを行ったServerEvent.CreateDatabase
ところ、データベースが作成または接続されたときに起動しますがServerEvent.DropDatabase
、デタッチでは起動しません。ひょっとしたら別のイベントかもしれません。それは私が次に見つけることです。ありがとうございました :)
10 以上の異なるフレーズをグーグルで検索しましたが、smo server events
. 愚かな私。