DISABLE TRIGGER上的触发器

时间:2011-08-30 18:34:48

标签: sql-server triggers ddl-trigger

有一个安全触发器可以阻止生产数据库实例上的所有SQL DDL事件(ALTER / DROP / CREATE等)。

对于部署,完成后您需要DISABLE TRIGGER然后ENABLE TRIGGER

我希望在安全触发器被禁用/启用时通知操作员(EXEC sp_notify_operator ...)。它们似乎不是DDL events,我也无法在sys.triggers上添加UPDATE / DELETE触发器。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

由于您已经“受保护”,因此可以说正在执行的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预防逻辑分离的良好副作用。