Componentes del flujo de CDC

Se aplica a:SQL Server SSIS Integration Runtime en Azure Data Factory

Importante

Los componentes de flujo de CDC, incluidos 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.

Los componentes Change Data Capture (CDC) de Attunity para Microsoft SQL Server 2019 Integration Services (SSIS) ayudan a los desarrolladores de SSIS a trabajar con CDC y reducen la complejidad de los paquetes de CDC.

Los componentes CDC de SSIS están diseñados para funcionar con la característica CDC de SQL Server , donde las tablas de origen son la misma base de datos de SQL Server o una base de datos de Oracle (cuando se usa el servicio CDC de Oracle para SQL Server). Se admiten tablas particionadas.

Los componentes incluyen componentes de flujo de control y de flujo de datos que simplifican la lectura y el procesamiento de datos de cambios en los paquetes SSIS. Los componentes se pueden agregar a la biblioteca de componentes de Microsoft SQL Server, pero se instalan por separado.

Estos son los componentes de la captura de datos modificados de Attunity:

Componente de flujo de control CDC:

Tarea de Control del CDC

Componentes de flujo de datos CDC:

origen de CDC

Divisor de CDC

Instalación

En esta sección se describen los procedimientos de instalación de los componentes CDC para Microsoft SQL Server 2019 Integration Services (SSIS).

Los componentes CDC para SSIS se distribuyen con Microsoft Change Data Capture Designer and Service for Oracle by Attunity para SQL Server. Esta descarga forma parte de SQL Server Feature Pack. Descargue los componentes del Feature Pack, en la página web de SQL Server 2016 Feature Pack.

Compatibilidad de versiones

Compatibilidad de versiones de SQL Server

Los componentes CDC para SSIS se admiten en todas las versiones compatibles de Microsoft SQL Server. Actualmente, se admiten las versiones de SQL Server de SQL Server 2012 a SQL Server 2017.

Compatibilidad de versiones de sistema operativo

Los componentes CDC para SSIS se admiten en los sistemas operativos y las plataformas siguientes:

  • Windows 8 y 8.1
  • Windows 10
  • Windows Server 2012 y 2012 R2
  • Windows Server 2016

Ejecutar el programa de instalación

Antes de ejecutar el asistente de instalación, asegúrese de que SQL Server Data Tools esté cerrado. A continuación, siga las instrucciones del asistente para la instalación.

Reiniciar el servicio SSIS

Después de instalar los componentes CDC, debe reiniciar el servicio SSIS para asegurarse de que los componentes funcionarán correctamente cuando se desarrollen paquetes en SQL SQL Server Data Tools.

Aparecerá un mensaje después de instalar los componentes. Haga clic en cuando se le solicite.

Desinstalar los componentes CDC de Microsoft

Puede desinstalar el origen de CDC, el divisor de CDC o la tarea de control de CDC mediante el asistente para desinstalar. Si usa SQL Server Data Tools para el desarrollo de paquetes, asegúrese de que SQL Server Data Tools está cerrado antes de ejecutar el asistente para la desinstalación.

Ventajas

Con los componentes CDC para los componentes de SQL Server Integration Services, los desarrolladores de SSIS pueden compilar fácilmente paquetes SSIS que procesen datos modificados. Estos componentes mejoran la capacidad de los desarrolladores de SSIS para trabajar con CDC y reducen la complejidad de los paquetes de CDC.

Los componentes CDC de SSIS se usan para proporcionar los datos modificados de forma que se facilite su procesamiento para la replicación, la carga de un almacén de datos, la actualización de dimensiones que cambian lentamente para OLAP, la auditoría de cambios o para otros usos posibles. El tipo de procesamiento adicional que se va a usar lo determina el desarrollador de SSIS.

Los componentes CDC de SSIS están diseñados para trabajar con la característica CDC de SQL Server con tablas de cambios que se encuentran en la misma base de datos de SQL Server .

Introducción a los componentes de captura de cambios de datos

Un paquete CDC típico procesa los cambios para un grupo de tablas. En la figura siguiente se muestra el flujo de control básico de este tipo de paquete CDC. Este paquete se denomina paquete de procesamiento por alimentación por goteo.

Flujo de control del paquete de procesamiento de alimentación por goteo

Este flujo de control de SQL Server Integration Services contiene dos tareas de control de CDC y la tarea Flujo de datos. La primera tarea, denominada Obtener intervalo de procesamiento CDC , establece el intervalo de LSN para los cambios que se procesan en la tarea de flujo de datos denominada Procesar cambios. Este intervalo se establece en función de los datos procesados durante la última ejecución del paquete y guardados en un almacenamiento persistente.

Para obtener más información sobre el uso de la tarea de control de CDC, consulte CDC Control Task y CDC Control Task Editor.

La ilustración siguiente muestra el flujo de datos Cambios del proceso, que muestra conceptualmente cómo se procesan dichos cambios.

Flujo de datos de cambios de proceso

Los pasos que se muestran en esta ilustración son:

  • Cambios de la tabla X es un origen CDC que lee los cambios realizados en la tabla X dentro del intervalo de procesamiento de CDC determinado en el flujo de control principal.

  • Divisor CDC X se utiliza para dividir los cambios en inserciones, eliminaciones y actualizaciones. En este escenario, se supone que el origen CDC está configurado para generar cambios netos de forma que tipos diferentes de cambios puedan procesarse en paralelo.

  • Los cambios concretos se procesan posteriormente en un nivel inferior. En esta ilustración, los cambios se insertan en las tablas mediante varios destinos de ODBC, pero en casos reales es posible que el procesamiento sea diferente.

Para obtener más información acerca del origen de CDC, vea:

origen de CDC

Editor de origen de CDC (página del Administrador de conexiones)

Editor de fuentes CDC (página de columnas)

Editor de origen de CDC (página de salida de errores)

Para obtener más información acerca del divisor CDC, vea:

Divisor de CDC

Una de las cuestiones básicas que requieren atención al compilar paquetes CDC es cómo el procesamiento de cambios interactúa con la carga inicial (o el procesamiento inicial) de los datos.

Los componentes CDC admiten tres escenarios distintos de carga inicial y de procesamiento de cambios:

  • La carga inicial se realiza con una instantánea de base de datos. En este caso, el procesamiento de cambios comienza con el LSN del evento de captura.

  • Carga inicial desde una base de datos inactiva. En este caso, no se realizarán cambios durante la carga inicial para que el LSN actual se pueda muestrear en algún momento durante la carga inicial y para que el procesamiento de cambios se inicie con ese LSN.

  • Carga inicial desde una base de datos activa. En este caso, como la carga inicial está en curso, los cambios se efectúan en la base de datos y no hay un LSN único desde el que se pueda iniciar con exactitud el procesamiento de cambios. En este caso, el desarrollador del paquete de carga inicial puede muestrear el LSN actual de la base de datos de origen antes y después de la carga inicial. Posteriormente, cuando se procesen los cambios, se ha de prestar atención cuando este procesamiento se realice en paralelo a la carga inicial, puesto que algunos de los cambios procesados ya se muestran en la carga inicial (por ejemplo, puede que un cambio Insert no se realice correctamente por un error de clave duplicada porque el proceso de carga inicial leyó la fila insertada).

En la ilustración siguiente se muestra un paquete SSIS que podría controlar los dos primeros escenarios:

Primeros dos escenarios de control de paquetes de SSIS

En la ilustración siguiente se muestra un paquete SSIS que podría controlar el tercer escenario:

Tercer escenario de control de paquetes de SSIS

Después del paquete de carga inicial, se ejecuta repetidamente un paquete de actualización incremental según una programación para procesar los cambios a medida que estén disponibles para su uso.

La transferencia del estado de procesamiento de CDC desde el paquete de carga inicial al paquete de carga incremental, y entre las distintas tareas dentro de cada paquete, se realiza mediante una variable especial de tipo cadena del paquete SSIS. El valor de esta variable se denomina Estado de CDC, que refleja el estado actual del procesamiento de CDC para los grupos de tablas gestionados por los paquetes de carga inicial y de alimentación continua.

El valor de la variable de estado de CDC debe mantenerse en un almacenamiento persistente. Se debe leer antes de iniciar el procesamiento de CDC y debe guardarse con el estado actual después de completar el procesamiento. La tarea de carga y almacenamiento del estado CDC la puede controlar el desarrollador de SSIS, pero el componente Control CDC puede automatizar esta tarea conservando el valor de estado CDC en una tabla de base de datos.

Consideraciones sobre la seguridad

En esta sección se enumeran algunas consideraciones de seguridad relacionadas con el uso de los componentes CDC en SSIS.

Autorización de acceso a datos modificados

Los paquetes de actualización por goteo necesitan acceder a las funciones CDC de SQL Server. Este acceso se concede de forma predeterminada a los miembros de rol fijo de base de datos db_owner . Como db_owner es un rol con permisos avanzados, al definir las instancias de captura en SQL Server , se recomienda asociar un rol de seguridad de acceso a cada instancia de captura que permita que el paquete CDC de SSIS use un usuario con permisos mucho más restringidos para procesar los cambios.

Acceso al LSN actual de la base de datos CDC

Las operaciones de la tarea Control de CDC para establecer el LSN inicial para el procesamiento de cambios deben poder encontrar el LSN actual de la base de datos de CDC. Los componentes buscan el LSN con el procedimiento sp_replincrementlsn desde la base de datos maestra. Es preciso asignar permiso de ejecución de este procedimiento al inicio de sesión que se usa para conectarse a la base de datos CDC de SQL Server .

Acceso a la tabla de estados CDC

La tabla de estados CDC se utiliza para guardar automáticamente los estados CDC que puedan ser actualizados por el inicio de sesión utilizado para conectarse a la base de datos CDC de SQL Server. Como esta tabla la crea el desarrollador de SSIS, establezca el administrador del sistema de SQL Server como un usuario con autorización para crear bases de datos de SQL Server y para realizar tareas administrativas y de mantenimiento. Además, un administrador del sistema de SQL Server que trabaje con bases de datos habilitadas para CDC debe conocer la tecnología y la implementación de CDC de SQL Server .

Agrupar tablas para el procesamiento de CDC

Los proyectos de base de datos varían en cuanto al tamaño y pueden contener desde varias tablas hasta muchos miles de tablas. Al diseñar los paquetes de carga inicial y CDC, conviene agrupar las tablas en grupos mucho más pequeños para que la administración sea más sencilla y lograr mayor eficacia. En esta sección se enumeran varias consideraciones que afectan a la ordenación de tablas en pequeños grupos, donde las tablas en cada uno de ellos se cargan inicialmente y se actualizan posteriormente en grupo.

Los patrones CDC compatibles con los componentes CDC dan por hecho que esta agrupación se ha determinado previamente. Cada grupo define un contexto CDC independiente que se mantiene por separado de otros grupos. Para cada grupo, se crean paquetes de actualización de carga inicial y de actualización incremental. Las actualizaciones incrementales se programan para ejecutarse periódicamente en función de las limitaciones de procesamiento de la tasa de cambios (por ejemplo, el consumo de CPU y de E/S, y el impacto en otros sistemas) y de la latencia deseada.

Las tablas se agrupan según las consideraciones siguientes:

  1. Según la base de datos de destino. Todas las tablas que se escriben en distintas bases de datos de destino o experimentan un procesamiento diferente deben asignarse a diferentes grupos CDC.

  2. Las tablas relacionadas con restricciones de integridad referencial deben asignarse al mismo grupo para evitar problemas de integridad referencial en el destino.

  3. Se pueden agrupar las tablas que pueden tolerar una latencia superior, de forma que se puedan procesar con menos frecuencia y reducir la carga global del sistema.

  4. Las tablas con un índice de cambios superior deben agruparse en grupos más pequeños y las tablas con un índice reducido de cambios se pueden agrupar en grupos mayores.

Se crean los dos paquetes siguientes para cada grupo CDC:

  • Un paquete de carga inicial, que lee el intervalo de datos completo a partir de las tablas de origen y lo aplica a las tablas de destino.

  • Un paquete de actualización incremental que lee los cambios realizados en las tablas de origen y los aplica a las tablas de destino. Este paquete debe ejecutarse de forma programada periódicamente.

Estado de CDC

Cada grupo CDC tiene un estado asociado, representado por una cadena con un formato concreto. Para obtener más información, vea CDC Control Task. En la tabla siguiente se muestran los posibles valores de estado CDC.

Estado Descripción
0-(INITIAL) El estado que existe antes de que se ejecute ningún paquete en el grupo CDC actual. Este es también el estado en el que el estado de CDC está vacío.

Para obtener más información sobre las operaciones de la tarea de control de CDC, vea CDC Control Task.
1-ILSTART (Carga inicial iniciada) Es el estado que se produce cuando se inicia el paquete de carga inicial. Esto ocurre después de la llamada a la operación MarkInitialLoadStart a la tarea de control de CDC.

Para obtener más información sobre las operaciones de la tarea de control de CDC, vea CDC Control Task.
2- ILEND (Carga inicial terminada) Es el estado que se produce cuando el paquete de carga inicial finaliza correctamente. Se produce tras la llamada de la operación MarkInitialLoadEnd a la tarea Control CDC.

Para obtener más información sobre las operaciones de la tarea de control de CDC, vea CDC Control Task.
3-ILUPDATE (Actualización de carga inicial) Es el estado que existe tras la primera ejecución del paquete de actualización después de la carga inicial, mientras continua procesándose el intervalo de procesamiento inicial. Se produce tras la llamada a la operación GetProcessingRange de la tarea de control de CDC.

Si se usa la columna _$reprocessing , se establece en 1 para indicar que el paquete puede estar ya volviendo a procesar filas en el destino.

Para obtener más información sobre las operaciones de la tarea de control de CDC, vea CDC Control Task.
4-TFEND (Actualización de alimentación gradual finalizada) 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.
5-TFSTART (Inicio de actualización de alimentación por goteo) Este es el estado en que queda el paquete Update en ejecuciones posteriores, después de llamar a la operación GetProcessingRange de la tarea de control de CDC.

Esto indica que se ha iniciado una ejecución normal de CDC, pero que no ha finalizado o que aún no ha finalizado correctamente (MarkProcessedRange).

Para obtener más información sobre las operaciones de la tarea de control de CDC, vea CDC Control Task.
6-TFREDO (Reprocesamiento de actualizaciones por alimentación por goteo) Este es el estado de GetProcessingRange que se produce después de TFSTART. Esto indica que la ejecución anterior no ha finalizado correctamente.

Si se usa la columna __$reprocessing, se establece en 1 para indicar que el paquete puede estar ya volviendo a procesar filas en el destino.
7-ERROR El grupo CDC está en estado de ERROR.

Este es el diagrama de estado para los componentes CDC. Un estado ERROR tiene lugar cuando se llega a un estado que no se esperaba. Los estados esperados se ilustran en el diagrama siguiente. Aunque el diagrama no muestra el estado ERROR.

Por ejemplo, al final de un paquete de carga inicial, cuando se intenta establecer el estado en ILEND, si el estado es TFSTART, el grupo CDC está en un estado de error y el paquete de actualización Trickle-Feed no se ejecutará (el paquete de carga inicial sí se ejecutará).

Diagrama de estado

Una vez que el paquete de carga inicial se ejecuta correctamente, el paquete de actualización incremental se ejecuta repetidamente según una programación predefinida para procesar los cambios en las tablas de origen. Cada ejecución del paquete de actualización por alimentación por goteo es una ejecución de tipo CDC.

En esta sección