jueves, 20 de mayo de 2010

Auditoria de cambios en sql server - Change Data Capture

SQL Server 2008 tiene una nueva funcionalidad que permite de una forma facil darle seguimiento a nuestras tablas, registra  los cambios (insert, update y delete) que se producen. Esta técnica puede ser aprovechada para muy diversas tareas, por ejemplo para registros de auditoría o carga de Data Warehouses.

Esta funcionalidad se llama Change Data Capture, como funciona:


En primer lugar, debemos de activar Change Data Capture en la base de datos:


USE AdventureWorks2008
GO

EXEC sys.sp_cdc_enable_db
GO

Al habilitar una base de datos para Change Data Tracking, se crea en esa base de datos un esquema denominada cdc y un usuario con el mismo nombre, así como las tablas de metadatos necesarios para el funcionamiento. A continuación, y tras haber comprobado que el servicio SQL Server Agent está iniciado, habilitaremos las tablas que deseamos comprobar. En el siguiente ejemplo se habilita el seguimiento para la tabla HumanResources.Department:


EXECUTE sys.sp_cdc_enable_table
@source_schema = N'HumanResources'
, @source_name = N'Department'
, @role_name = N'cdc_Admin';
GO

Para utilizar Change Tracking, debemos de activarlo, de modo similar a Change Data Capture, primero a nivel de base de datos y después, seleccionando la tabla, como muestra el siguiente código.


ALTER DATABASE AdventureWorks2008
SET CHANGE_TRACKING = ON
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)
GO

ALTER TABLE HumanResources.Department
ENABLE CHANGE_TRACKING
WITH (TRACK_COLUMNS_UPDATED = ON)

Para ver lo cambiado ver tablas del sistema.

__$operation

Identifica la operación del lenguaje de manipulación de datos (DML) necesaria para aplicar la fila de datos modificados al origen de datos de destino. Puede ser uno de los siguientes elementos:

1 = eliminar
2 = insertar
3 = actualización (los valores de columna capturados son los de antes de la operación de actualización). Este valor solamente se aplica cuando se especifica la opción de filtro de filas 'all update old'.
4 = actualización (los valores de columna capturados son los de después de la operación de actualización)


Nota:
solo funciona con las siguientes versiones:
Enterprise, Developer y Evaluation.

documentacion:
http://msdn.microsoft.com/en-us/library/bb522489.aspx

No hay comentarios.: