有一个安全触发器可以阻止生产数据库实例上的所有SQL DDL事件(ALTER / DROP / CREATE等)。
对于部署,完成后您需要DISABLE TRIGGER
然后ENABLE TRIGGER
。
我希望在安全触发器被禁用/启用时通知操作员(EXEC sp_notify_operator ...
)。它们似乎不是DDL events,我也无法在sys.triggers
上添加UPDATE / DELETE触发器。有什么想法吗?
答案 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预防逻辑分离的良好副作用。