Пожарный триггер на DISABLE TRIGGER - PullRequest
2 голосов
/ 30 августа 2011

Существует триггер безопасности, который блокирует все события SQL DDL (ALTER / DROP / CREATE и т. Д.) В экземпляре производственной базы данных.

Для развертываний вы должны сделать DISABLE TRIGGER, а затем ENABLE TRIGGER, когда закончите.

Я бы хотел, чтобы оператор был уведомлен (EXEC sp_notify_operator ...), когда триггер безопасности ОТКЛЮЧЕН / ВКЛЮЧЕН. Они не являются событиями DDL , и я не могу добавить триггер UPDATE / DELETE для sys.triggers. Есть идеи?

1 Ответ

1 голос
/ 30 августа 2011

Поскольку вы уже «защищены», так сказать, от выполняемых операторов DDL, вы можете добавить еще один триггер базы данных для поиска событий DDL, который вызывает процедуру для уведомления оператора.Вам может понадобиться еще один уровень управления - может быть, что-то, чтобы поставить в очередь уведомления - чтобы он не стал слишком спамовым.Я мог бы представить, что изменения будут представлены и получено более 100 уведомлений по электронной почте ... чёрт.

CREATE TRIGGER DatabaseDDLNotices
ON DATABASE FOR DDL_DATABASE_LEVEL_EVENTS
AS BEGIN
  -- place something into a queue to be batched later
END;

На мой взгляд, это также имеет приятный побочный эффект от разделения логики уведомлений и предотвращения DDL.

...