データベース内のトリガーを有効または無効にしようとすると、監査する方法が必要です。 DDLトリガーの代替は偉大なだけユーザーがDISABLE/ENABLEトリガーの監査SQL
ALTER TABLE <tableName> ENABLE TRIGGER <triggerName>
OR
ALTER TABLE <tableName> DISABLE TRIGGER <triggerName>
ステートメントを使用する場合の条件の下で動作します。私が判断したものから、ユーザーは、ALTERコマンドをバイパスし、次のステートメントを実行した場合、DDLの方法は役に立たないレンダリング:
DISABLE TRIGGER <triggerName> ON <tableName>
ENABLE TRIGGER <triggerName> ON <tableName>
私はそれらのどれも動作しないこれらのイベントをキャプチャするにはいくつかの考えを持っていました。そのうちの1つは、sys.triggersビューの基礎となるテーブルにアクセスできる場合、そのテーブルに挿入/更新トリガを配置し、トリガ名をフィルタリングして監査を取得することでした。私の疑念は、それが可能であっても、無限の再帰につながる可能性が高いということです。
この問題の代替解決策については、ここにいる人はいませんか?私はなぜMSが監査の範囲を逃れるステートメントの拡張版を許可するのか理解していない。つまり、最も簡単な方法からの監査です。 SQLプロファイラを使用すると、このために不必要なオーバーヘッドになるようです。
うわー - ENABLE TRIGGER ... ON ...構文がSQL 2008 DDL監査をバイパスしていると言っていますか? http://msdn.microsoft.com/en-us/library/dd392015(v=sql.100).aspx – StuartLC
DDLトリガを無効にできるかのように、DMLトリガだけで、監査トリガも無効にすることができます。これは私が思うデフォルトトレースに記録されています。 –
はい、誰かがDISABLE TRIGGER ON の構文を使用してDMLトリガーを無効にした場合、DDLトリガーでそのイベントをキャプチャする方法はありません。 –
Mark