3

本番データベース インスタンスですべての SQL DDL イベント (ALTER/DROP/CREATE など) をブロックするセーフティ トリガーがあります。

展開の場合は、実行しDISABLE TRIGGERてから完了しENABLE TRIGGERます。

EXEC sp_notify_operator ...安全トリガーが無効/有効になったときに、オペレーターに通知 ( ) を受け取りたいです。それらはDDL イベントではないようで、どちらにも UPDATE/DELETE トリガーを追加できませんsys.triggers。何か案は?

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 に答える