0

データベースで動作し、毎月新しいデータベースを作成する C# アプリケーションを作成しています。

古いデータベースは、SQL Management Studio またはその他の方法でユーザーがデタッチおよびアタッチできます。

SQLサーバーイベント(存在する場合)をリッスンし、データベースが接続または切断されたときにキャッチする方法を見つけようとしています。

操作が発生するattachと、アプリケーションはデータベースをチェックし、テーブル スキーマを最新バージョンに更新する必要があります。

私は SQL SMO も学んでおり、このライブラリがイベント リスナーを提示してくれると考えていましたが、それらを見つけることができませんでした。

もちろん、数秒ごとに新しいデータベースをチェックするスレッドまたはタイマーを実行することもできます。私はそれを試し、実行SQLServer.Databases.Refresh()するとデータベースリストが更新され、それを繰り返して作業できます。

しかし、これを達成するためのより簡単な方法はありますか? OnDatabaseAttachどこかでみたいなイベントがあるかも?

編集

私を正しい方向に導いてくれたelsausmcに感謝します。少し検索してServerEventSetこのページにたどり着きました。

簡単なテストを行ったServerEvent.CreateDatabaseところ、データベースが作成または接続されたときに起動しますがServerEvent.DropDatabase、デタッチでは起動しません。ひょっとしたら別のイベントかもしれません。それは私が次に見つけることです。ありがとうございました :)

10 以上の異なるフレーズをグーグルで検索しましたが、smo server events. 愚かな私。

4

1 に答える 1

1

おそらく、SMO にはアタッチ/デタッチがなく、CREATE と DROP でカバーされているのではないでしょうか? ServerEventSet.CreateDatabase および ServerEventSet.DropDatabase とイベントを処理しますか? すでに調べていたらすみません。

于 2016-04-18T16:53:03.017 に答える