Compartir a través de


Trabajo de captura

El trabajo de captura se inicia ejecutando el procedimiento almacenado sin parámetros sp_MScdc_capture_job. Este procedimiento almacenado empieza extrayendo los valores configurados para maxtrans, maxscans, continuous y pollinginterval para el trabajo de captura desde msdb.dbo.cdc_jobs. A continuación, estos valores configurados se pasan como parámetros al procedimiento almacenado sp_cdc_scan. Esto se utiliza para llamar a sp_replcmds con el fin de realizar el examen del registro.

Parámetros de trabajo de captura

Para entender el comportamiento del trabajo de captura, debe saber cómo sp_cdc_scan utiliza los parámetros configurables.

Parámetro maxtrans

El parámetro maxtrans especifica el número máximo de transacciones que se pueden procesar en un único ciclo de examen del registro. Si, durante el examen, el número de transacciones que se van a procesar alcanza este límite, no se incluye ninguna transacción adicional en el examen actual. Cuando finaliza un ciclo de examen, el número de transacciones que se procesaron siempre será menor o igual que maxtrans.

Parámetro maxscans

El parámetro maxscans especifica el número máximo de ciclos de examen que se intentan para agotar el registro antes de devolver (continuous = 0) o ejecutar un waitfor (continuous = 1).

Parámetro continuous

El parámetro continuous controla si sp_cdc_scan abandona el control después de agotar el registro o ejecutar el número máximo de ciclos de examen (modo de una instantánea). También controla si sp_cdc_scan continúa ejecutándose hasta detenerse explícitamente (modo continuo).

Modo de una instantánea

En el modo de una instantánea, el trabajo de captura solicita que sp_cdc_scan realice un máximo de maxtrans exámenes para intentar agotar el registro y volver. Cualquier transacción adicional a maxtrans que se encuentre en el registro se procesará en exámenes posteriores.

El modo de una instantánea se utiliza en pruebas controladas, en las que se conoce el volumen de las transacciones que se van a procesar, y hay ventajas en el hecho de que el trabajo se cierra automáticamente en cuanto finaliza. Este modo no se recomienda para usarse en producción. Esto se debe a que se basa en la programación de trabajos para administrar la frecuencia con la que se ejecuta el ciclo de examen.

La ejecución en el modo de una instantánea permite calcular un límite superior en el rendimiento esperado del trabajo de captura, expresado en transacciones por segundo, mediante el cálculo siguiente:

(maxtrans * maxscans) / number of seconds between scans

Incluso si el tiempo que se necesitase para examinar el registro y rellenar las tablas de cambios no fuese significativamente diferente de 0, el rendimiento medio del trabajo podría no superar el valor obtenido dividiendo el resultado de multiplicar el número máximo de transacciones permitidas para un solo examen por el número máximo permitido de exámenes entre el número de segundos que separan el procesamiento de registros.

Si se fuera a usar el modo de una instantánea para regular el examen de registros, la programación del trabajo tendría que regir el número de segundos entre el procesamiento de registros. Cuando se desea este tipo de comportamiento, ejecutar el trabajo de captura en el modo continuo es el método mejor para administrar la reprogramación del examen de registros.

Modo continuo e intervalo de sondeo

En el modo continuo, el trabajo de captura solicita que sp_cdc_scan se ejecute continuamente. Esto permite que el procedimiento almacenado administre su propio bucle de espera proporcionando no sólo los valores de los parámetros maxtrans y maxscans sino también un valor para el número de segundos entre el procesamiento de registros (el intervalo de sondeo). Al ejecutarse en este modo, el trabajo de captura sigue estando activo, ejecutando un WAITFOR entre el examen de registros.

Nota

Cuando el valor del intervalo de sondeo es mayor que 0, el mismo límite superior para el rendimiento del trabajo de una instantánea repetido se aplica también al funcionamiento del trabajo en el modo continuo. Es decir, (maxtrans * maxscans) dividido entre un intervalo de sondeo distinto de cero impondrá un límite superior en el número medio de transacciones que pueden ser procesadas por el trabajo de captura.

Personalización del trabajo de captura

En el trabajo de captura se puede aplicar una lógica adicional para determinar si un examen nuevo comienza inmediatamente o si se impone una suspensión antes de iniciarse en lugar de basarse en un intervalo de sondeo fijo. La opción podría basarse simplemente en la hora del día, exigiendo quizás suspensiones muy largas durante las horas de actividad máxima, e incluso el paso a un intervalo de sondeo igual a 0 al final del día, cuando es importante completar el procesamiento de los días y preparar las ejecuciones nocturnas. El progreso del proceso de captura también se puede supervisar para determinar el momento en que todas las transacciones confirmadas a media noche han sido examinadas y depositadas en las tablas de cambios. Esto permite que el trabajo de captura finalice y se reinicie de la forma programada diariamente. Al reemplazar el paso de trabajo entregado llamando a sp_cdc_scan con una llamada a un contenedor escrito por el usuario para sp_cdc_scan, se puede obtener un comportamiento muy personalizado con poco esfuerzo adicional.

Vea también

Conceptos