Compartir a través de


Trabajo de limpieza

En esta sección se proporciona información sobre cómo funciona el trabajo de limpieza de la captura de datos modificados.

Estructura del trabajo de limpieza

La captura de datos modificados utiliza una estrategia de limpieza basada en la retención para administrar el tamaño de la tabla de cambios. El mecanismo de limpieza consta de un trabajo del Agente SQL Server Transact-SQL que se crea cuando se habilita la primera tabla de la base de datos. Un único trabajo de limpieza controla la limpieza para todas las tablas de cambios de base de datos y aplica el mismo valor de retención a todas las instancias de captura definidas.

El trabajo de limpieza se inicia ejecutando el procedimiento almacenado sin parámetros sp_MScdc_cleanup_job. Este procedimiento almacenado comienza extrayendo los valores configurados para la retención y el umbral del trabajo de limpieza de msdb.dbo.cdc_jobs. El valor de retención se utiliza para calcular una nueva marca de límite inferior para las tablas de cambios. El número especificado de minutos se resta del valor de tran_end_time máximo en la tabla cdc.lsn_time_mapping para obtener la nueva marca de límite inferior expresada como un valor datetime. A continuación, la tabla CDC.lsn_time_mapping se utiliza para convertir este valor datetime en un valor de lsn correspondiente. Si varias entradas comparten el mismo tiempo de confirmación en la tabla, el lsn que corresponde a la entrada que tiene el valor de lsn más bajo se elige como nueva marca de límite inferior. Este valor de lsn se pasa al procedimiento sp_cdc_cleanup_change_tables para quitar las entradas de las tablas de cambios de base de datos.

Nota

La ventaja de utilizar el tiempo de confirmación de la transacción reciente como base para calcular la nueva marca de límite inferior es que permite que los cambios permanezcan en las tablas de cambios durante el tiempo especificado. Esto sucede incluso cuando el proceso de captura se ejecuta en segundo plano. Todas las entradas que tienen el mismo tiempo de confirmación que la marca de límite inferior actual continúan siendo representadas dentro de las tablas de cambios si se elige el valor de lsn más bajo que tenga el tiempo de confirmación compartido para la marca de límite inferior real.

Cuando se realiza una limpieza, la marca de límite inferior para todas las instancias de captura se actualiza inicialmente en una única transacción. A continuación, intenta quitar las entradas obsoletas de las tablas de cambios y de la tabla cdc.lsn_time_mapping. El valor de umbral configurable limita el número de entradas que se eliminan en una única instrucción. El que no se pueda realizar la eliminación en alguna tabla individual no impide que la operación se intente en las tablas restantes.

Personalización del trabajo de limpieza

La posibilidad de personalización de los trabajos de limpieza radica en la estrategia que se usa para determinar qué entradas de la tabla de cambios se van a descartar. La única estrategia admitida en el trabajo de limpieza entregado es la que se basa en el tiempo. En esa situación, la nueva marca de límite inferior se calcula restando el período de retención permitido del tiempo de confirmación de la última transacción procesada. Dado que los procedimientos de limpieza subyacentes se basan en lsn en lugar de en el tiempo, se puede utilizar la cantidad de estrategias que se desee para determinar el lsn más bajo que se ha de conservar en las tablas de cambios. Sólo algunas se basan estrictamente en el tiempo. Por ejemplo, el conocimiento sobre los clientes se puede utilizar para proporcionar un seguro si los procesos de niveles inferiores que requieren acceso a las tablas de cambios no se pueden ejecutar. Además, aunque la estrategia predeterminada aplica el mismo lsn para limpiar las tablas de cambios de todas las bases de datos, también se puede llamar al procedimiento de limpieza subyacente para limpiar en el nivel de la instancia de captura.

Vea también

Conceptos