Sugerencias para implementar tablas de auditoría en SQL Server?

votos
29

Un método simple que he usado en el pasado es básicamente crear una segunda tabla cuya estructura refleje la que quiero auditar, y luego crear un disparador de actualización / eliminación en la tabla principal. Antes de actualizar / eliminar un registro, el estado actual se guarda en la tabla de auditoría mediante el activador.

Si bien es efectivo, los datos en la tabla de auditoría no son los más útiles o simples de reportar. Me pregunto si alguien tiene un método mejor para auditar los cambios en los datos.

No debe haber demasiadas actualizaciones de estos registros, pero se trata de información altamente confidencial, por lo que es importante para el cliente que todos los cambios sean auditados e informados fácilmente.

Publicado el 06/08/2008 a las 19:39
fuente por usuario
En otros idiomas...                            


6 respuestas

votos
17

¿Cuánta escritura vs. lectura de esta (s) tabla (s) espera?

Utilicé una única tabla de auditoría, con columnas para Tabla, Columna, OldValue, NewValue, User y ChangeDateTime, lo suficientemente genérica como para trabajar con cualquier otro cambio en el DB, y aunque se escribieron MUCHOS datos en esa tabla, los informes en que los datos eran lo suficientemente escasos como para poder ejecutarlos en períodos de poco uso del día.

Agregado: si la cantidad de datos frente a los informes es una preocupación, la tabla de auditoría podría replicarse en un servidor de base de datos de solo lectura, lo que le permite ejecutar informes cuando sea necesario sin atascar el servidor principal para que no haga su trabajo.

Respondida el 06/08/2008 a las 19:51
fuente por usuario

votos
6

Estamos utilizando dos diseño de la tabla para esto.

Una tabla es la celebración de datos sobre transacciones (base de datos, nombre de la tabla, esquema, la columna, la aplicación que desencadenó transacción, nombre de host para inicio de sesión que se inició la transacción, fecha, número de filas afectadas y par más).

Segunda tabla sólo se utiliza para almacenar los cambios de datos para que podamos deshacer los cambios si es necesario e informar sobre los valores antiguos / nuevos.

Otra opción es utilizar una herramienta de terceros para este como ApexSQL Audit o característica captura de datos modificados en SQL Server.

Respondida el 10/05/2013 a las 10:41
fuente por usuario

votos
2

He encontrado estos dos enlaces útiles:

Usando CLR y tabla de auditoría única.
Creación de un disparador de auditoría genérico con SQL 2005 CLR

Usar disparadores y una tabla de auditoría separada para cada tabla que se está auditando.
¿Cómo audito los cambios en los datos de SQL Server?

Respondida el 01/09/2008 a las 10:14
fuente por usuario

votos
1

Utilizo el enfoque descrito por Greg en su respuesta y rellenar la tabla de auditoría con un procedimiento almacenado llamado desde los desencadenantes de la tabla.

Respondida el 06/08/2008 a las 21:23
fuente por usuario

votos
1

OmniAudit puede ser una buena solución para su necesidad. Nunca lo había usado antes porque estoy bastante feliz escribiendo mis propias rutinas de auditoría, pero suena bien.

Respondida el 06/08/2008 a las 20:56
fuente por usuario

votos
1

¿Hay algún paquete de auditoría integrado? Oracle tiene un buen paquete, que incluso enviará cambios de auditoría a un servidor separado fuera del acceso de cualquier tipo malo que esté modificando el SQL.

Su ejemplo es asombroso ... muestra cómo alertar a cualquiera que modifique las tablas de auditoría.

Respondida el 06/08/2008 a las 19:49
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more