Как подписаться на события присоединения / отсоединения базы данных?
Я пишу приложение на C#, которое работает с базами данных и ежемесячно создает новую базу данных.
Старые базы данных могут быть отсоединены и присоединены пользователем через SQL Management Studio или другими способами.
Я пытаюсь выяснить, как слушать события сервера SQL (если они существуют) и ловить, когда база данных была присоединена или отключена.
когда attach
происходит операция, мое приложение должно проверить базу данных и обновить схему таблицы до последней версии.
Я также изучаю SQL SMO и думал, что эта библиотека представит мне слушателей событий, но я не могу их найти.
Конечно, я мог бы запустить поток или таймер, который проверял бы наличие новых баз данных каждые пару секунд. Я пробовал это и работает SQLServer.Databases.Refresh()
обновляет список базы данных, который я могу затем перебрать и работать.
Но есть ли более простой способ достичь этого? Может быть, есть такое событие, как OnDatabaseAttach
где-то?
РЕДАКТИРОВАТЬ
Спасибо elsausmc за то, что направил меня в правильном направлении. Я сделал небольшой поиск по ServerEventSet
и наткнулся на эту страницу.
Я сделал быстрый тест, и оказалось, что ServerEvent.CreateDatabase
запускается, когда база данных была создана ИЛИ присоединена, однако ServerEvent.DropDatabase
не срабатывает при отсоединении. Возможно, это будет какое-то другое событие. Это для меня, чтобы узнать дальше. Спасибо:)
Погуглил с 10+ разными фразами и никогда не придумывал ничего простого smo server events
, Дурак я.
1 ответ
Возможно, в SMO нет Attach/Detach, и он рассматривается как CREATE и DROP? ServerEventSet.CreateDatabase и ServerEventSet.DropDatabase и обработать событие? Извините, если вы уже изучили это.