3

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

对于您要进行的部署DISABLE TRIGGER,然后ENABLE TRIGGER在完成时进行。

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

4

1 回答 1

2

由于您已经从正在执行的 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 预防逻辑分开。

于 2011-08-30T18:39:49.157 回答