Necesito una forma de auditar cuando alguien intenta HABILITAR o DESACTIVAR un desencadenador en nuestra base de datos. La alternativa DDL gatillo funciona muy bien, pero sólo bajo la condición para que cuando el usuario utilizaAuditoría para DISABLE/ENABLE Disparadores EN SQL
ALTER TABLE <tableName> ENABLE TRIGGER <triggerName>
O
ALTER TABLE <tableName> DISABLE TRIGGER <triggerName>
comunicado. Por lo que he determinado, el método DDL hace inútil si el usuario ejecuta las siguientes afirmaciones que no utilizan el comando ALTER:
DISABLE TRIGGER <triggerName> ON <tableName>
ENABLE TRIGGER <triggerName> ON <tableName>
he tenido varios pensamientos en la captura de estos eventos ninguno de ellos funciona. Uno de los cuales era si podía acceder a la tabla subyacente a la vista sys.triggers, podría colocar un disparador de inserción/actualización en esa tabla y filtrar el nombre del disparador para adquirir la auditoría; pero mi sospecha es que probablemente conduciría a una recursión infinita incluso si fuera posible.
¿Alguien aquí tiene alguna sugerencia posible para soluciones alternativas a este problema? No entiendo por qué MS permitiría versiones mejoradas de declaraciones para escapar del alcance de las auditorías. Es decir, auditar desde los métodos más simples; el uso del perfilador de SQL parece ser innecesario para esto.
Wow, ¿está diciendo que la sintaxis ENABLE TRIGGER ... ON ... pasa por alto a SQL 2008 DDL Audit? http://msdn.microsoft.com/en-us/library/dd392015(v=sql.100).aspx – StuartLC
Just DML se desencadena presumiblemente como si alguien pudiera deshabilitar los desencadenadores DDL; también pueden deshabilitar su desencadenante de auditoría. Esto está registrado en la traza predeterminada, creo. –
Sí, si alguien desactivó mi desencadenador DML con la sintaxis DISABLE TRIGGER ON , entonces no tendría forma de capturar ese evento mediante un desencadenador DDL. –
Mark