Activar CDC (Change Data Capture) en SQL Server

Hola a todos. Hoy vamos a hablaros sobre cómo activar CDC en SQL Server. Para ello, os explicaremos cómo activarlo a nivel de base de datos, y a nivel de tabla.

Activar CDC en SQL Server

¿Qué es CDC?

Antes de saber cómo activarlo, debemos saber de qué se trata. CDC son las siglas de Change Data Capture. Esta utilidad de SQL Server, guarda un histórico de las operaciones INSERT, UPDATE y DELETE ejecutadas en tablas específicas de la base de datos. Los datos guardados registra el valor anterior y posterior, y el tipo de operación. Pero no guarda la información de quién ni en qué momento.

Para su funcionamiento es necesario primeramente activarlo a nivel de base de datos. En este momento se crean dos jobs en el Agente de SQL Server. Uno para la captura y otro para el borrado. En nuestro caso estos jobs no los cambiaremos y dejaremos los valores por defecto. Si estos jobs están desactivados, dejará de registras información. Para activarlo a nivel de base de datos, es necesario el siguiente código. En el caso de este ejemplo, se realiza sobre la base de datos Auditoria. Debería remplazarse «Auditoria» por la base de datos en la que se quiere activar:

USE Auditoria  
GO  
EXEC sys.sp_cdc_enable_db  
GO  

Activar CDC a nivel de tabla

Una vez que ya se ha activado a nivel de base de datos, es necesario activar a nivel de tabla. En este momento debemos ejecutar por cada tabla que queremos registrar, el siguiente código. Si lo queremos activarlo en 20 tablas, deberemos ejecutar este código 20 veces modificando los datos para cada tabla. Para seguir con el ejemplo, realizaremos el cambio en Auditoría sobre la tabla «DatabaseLog»:

-- =========  
-- Enable a Table Without Using a Gating Role template   
-- =========  
USE Auditoria  
GO  
EXEC sys.sp_cdc_enable_table  
@source_schema = N'dbo',  
@source_name   = N'DatabaseLog',  
@role_name     = NULL,  
@supports_net_changes = 1  
GO  

En ejemplo anterior, hay un parámetro (@role_name) establecido en NULL. Dejándolo de esta forma, cualquier usuario con permisos de sysadmin podría ver esta información. En cambio, si queremos asignarlo a un rol específico por seguridad, debería indicarse aquí el rol.

Si prefieres que activemos nosotros CDC en tu entorno o quieres comprobar si es viable, contáctanos sin compromiso. No te pierdas nuestras publicaciones suscribiéndote a nuestra newsletter mensual.

¿Aún no conoces Query Performance? Descubre cómo puede ayudarte en tu entorno Oracle. Más información en su página de LinkedIn.

Sígue a GPS en LinkedIn