sql >> Base de Datos >  >> RDS >> Sqlserver

Creación de disparadores de auditoría en SQL Server

Solo quiero mencionar un par de puntos:

Usar generadores de código No puede tener un solo procedimiento para rastrear todas las tablas, deberá generar disparadores similares pero distintos en cada tabla rastreada. Este tipo de trabajo es el más adecuado para la generación de código automatizada. En su lugar, usaría una transformación XSLT para generar el código a partir de XML, y el XML se puede generar automáticamente a partir de los metadatos. Esto le permite mantener fácilmente los activadores regenerándolos cada vez que realiza un cambio en la lógica/estructura de auditoría o se agrega/modifica una tabla de destino.

Considere la planificación de capacidad para la auditoría. Una tabla de auditoría que realice un seguimiento de todos los cambios de valor será, con diferencia, la tabla más grande de la base de datos:contendrá todos los datos actuales y todo el historial de los datos actuales. Dicha tabla aumentará el tamaño de la base de datos en 2-3 órdenes de magnitud (x10, x100). Y la mesa de auditoría se convertirá rápidamente en el cuello de botella de todo:

  • cada operación DML requerirá bloqueos en la tabla de auditoría
  • todas las operaciones administrativas y de mantenimiento deberán adaptarse al tamaño de la base de datos debido a la auditoría

Tener en cuenta los cambios de esquema . Se puede descartar una tabla llamada 'Foo' y luego se puede crear una tabla diferente llamada 'Foo'. La pista de auditoría tiene que ser capaz de distinguir los dos objetos diferentes. Es mejor utilizar un enfoque de dimensión de cambio lento.

Considere la necesidad de eliminar eficientemente registros de auditoría. Cuando vence el período de retención dictado por las políticas de su aplicación, debe poder eliminar los registros de auditoría vencidos. Puede que no parezca tan importante ahora, pero 5 años después, cuando vencen los primeros registros, la tabla de auditoría ha crecido a 9,5 TB, puede ser un problema.

Considere la necesidad de consultar la auditoría . La estructura de la tabla de auditoría debe estar preparada para responder de manera eficiente a las consultas sobre auditoría. Si su auditoría no se puede consultar, entonces no tiene valor. Las consultas dependerán completamente de sus requisitos y solo usted los conoce, pero la mayoría de los registros de auditoría se consultan por intervalos de tiempo ("¿qué cambios ocurrieron ayer entre las 7:00 p. m. y las 8:00 p. tabla?') o por autor ('¿qué cambios hizo Bob en la base de datos?').