Definir una variable de estado
Se aplica a: SQL Server SSIS Integration Runtime en Azure Data Factory
Importante
Los componentes de flujo de CDC, incluida la tarea de control de CDC, el origen de CDC y el divisor de CDC, están en desuso. Para obtener información, consulte el anuncio.
Este procedimiento describe cómo definir una variable de paquete donde se almacena el estado CDC.
La tarea Control CDC carga, inicializa y actualiza la variable de estado CDC y el componente de flujo de datos de origen de CDC la usa para determinar el intervalo de procesamiento actual de los registros de cambios. La variable de estado CDC se puede definir en cualquier contenedor común a la tarea Control CDC y al origen de CDC. Esto puede estar en el nivel de paquete, pero también puede estar en otros contenedores, como un contenedor de bucles.
No se recomienda modificar manualmente el valor de la variable de estado CDC, pero puede resultar útil comprender su contenido.
La siguiente tabla proporciona una descripción detallada de los componentes del valor de la variable de estado CDC.
Componente | Descripción |
---|---|
<state-name> | Este es el nombre del estado CDC actual. |
CS | Esto marca el punto inicial del intervalo de procesamiento actual (inicio actual). |
<cs-lsn> | Este es el último LSN (número de secuencia de registro) procesado en la anterior ejecución de CDC. |
CE | Esto marca el punto final del intervalo de procesamiento actual (final actual). La presencia del componente CE en el estado CDC indica que, o bien se está procesando actualmente un paquete CDC, o un paquete CDC generó un error antes de procesar completamente su intervalo de procesamiento de CDC. |
<ce-lsn> | Este es el último LSN que se va a procesar en la ejecución de CDC actual. Siempre se supone que el último número de secuencia que se va a procesar es el máximo (0xFFF...). |
IR | Esto marca el intervalo de procesamiento inicial. |
<ir-start> | Este es un LSN de un cambio justo antes de que comenzara la carga inicial. |
<ir-end> | Este es un LSN de un cambio justo después de que finalizara la carga inicial. |
TS | Esto establece la marca de tiempo para la última actualización del estado CDC. |
<timestamp> | Esta es una representación decimal de la propiedad System.DateTime.UtcNow de 64 bits. |
ER | Esto aparece si la última operación generó un error e incluye una breve descripción de la causa de este. Si este componente está presente, siempre aparecerá el último. |
<short-error-text> | Esta es la descripción breve del error. |
Los LSN y los números de secuencia se codifican como cadenas hexadecimales de hasta 20 dígitos que representan el valor LSN de Binary(10).
En la tabla siguiente se describen los valores de estado CDC posibles.
State | Descripción |
---|---|
(INITIAL) | Este es el estado inicial antes de que se ejecutara cualquier paquete en el grupo CDC actual. Es también el estado cuando el estado CDC está vacío. |
ILSTART (Carga inicial iniciada) | Es el estado en el que se inicia el paquete de carga inicial, después de que la operación MarkInitialLoadStart llame a la tarea Control CDC. |
ILEND (Carga inicial terminada) | Es el estado en el que finaliza correctamente el paquete de carga inicial, después de que la operación MarkInitialLoadEnd llame a la tarea Control CDC. |
ILUPDATE (Actualización de carga inicial) | Es el estado en las ejecuciones del paquete de actualización de fuente de generación tras la carga inicial, mientras continúa procesándose el intervalo de procesamiento inicial. Es el estado después de que la operación GetProcessingRange llame a la tarea Control CDC. Si usa la columna __$reprocessing, se establece en 1 para indicar que el paquete puede volver a procesar filas en el destino. |
TFEND (Actualización de fuente de generación terminada) | Es el estado que se espera para las ejecuciones normales de CDC. Indica que la ejecución anterior se completó correctamente y que se puede iniciar una ejecución nueva con un intervalo de procesamiento nuevo. |
TFSTART | Este es el estado de una ejecución no inicial del paquete de actualización de fuente complicada, después de la llamada de la operación GetProcessingRange a la tarea Control CDC. Esto indica que se inicia una ejecución CDC normal, pero no ha finalizado o aún no ha terminado, limpiamente (MarkProcessedRange). |
TFREDO (Reprocesamiento de actualizaciones de fuente de generación) | Es el estado en una GetProcessingRange que tiene lugar tras TFSTART. Esto indica que la ejecución anterior no se completó correctamente. Si usa la columna __$reprocessing, se establece en 1 para indicar que el paquete puede volver a procesar filas en el destino. |
ERROR | El grupo CDC tiene un estado ERROR. |
Estos son algunos ejemplos de valores de la variable de estado CDC.
ILSTART/IR/0x0000162B158700000000//TS/2011-08-07T17:10:43.0031645/
ILSTART/IR/0x0000162B158700000000//TS/2011-08-07T17:10:43.0031645/
TFEND/CS/0x0000025B000001BC0003/TS/2011-07-17T12:05:58.1001145/
TFSTART/CS/0x0000030D000000AE0003/CE/0x0000159D1E0F01000000/TS/2011-08-09T05:30:43.9344900/
TFREDO/CS/0x0000030D000000AE0003/CE/0x0000159D1E0F01000000/TS/2011-08-09T05:30:59.5544900/
Para definir una variable de estado CDC
En SQL Server Data Tools, abra el paquete de SQL Server 2019 Integration Services (SSIS) que tenga el flujo CDC donde debe definir la variable.
Seleccione la pestaña Explorador de paquetes y agregue una nueva variable.
Asigne a la variable un nombre que pueda reconocer como su variable de estado.
Proporcione a la variable de un tipo de datos String .
No asigne un valor a la variable como parte de su definición. El valor debe ser establecido por la tarea Control CDC.
Si tiene previsto usar la tarea Control CDC con persistencia automática de estado, la variable estado CDC se lee de la tabla de estado de la base de datos que especifica y se actualiza de nuevo a esa misma tabla cuando cambia su valor. Para obtener más información sobre la tabla State, vea CDC Control Task (Tarea de control CDC) y CDC Control Task Editor (Editor de tareas control CDC).
Si no usa la tarea Control CDC con persistencia automática de estado, debe cargar el valor de variable del almacenamiento persistente donde se guardó su valor la última vez que se ejecutó el paquete y volver a escribirlo en el almacenamiento persistente cuando se completó el procesamiento del intervalo de procesamiento actual.