Как подписаться на события присоединения / отсоединения базы данных?

Я пишу приложение на 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 и обработать событие? Извините, если вы уже изучили это.

Другие вопросы по тегам