Cómo funciona la réplica transaccional

La réplica transaccional se implementa con el Agente de instantáneas, el Agente de registro del LOG y el Agente de distribución de SQL Server. El Agente de instantáneas prepara archivos de instantáneas que contienen esquemas y datos de las tablas y objetos de base de datos publicados, almacena los archivos en la carpeta de instantáneas y registra los trabajos de sincronización en la base de datos de distribución del distribuidor.

El Agente de registro del LOG supervisa el registro de transacciones de cada base de datos configurada para la réplica transaccional y copia las transacciones marcadas para ser replicadas desde el registro de transacciones a la base de datos de distribución, que actúa como una cola de almacenamiento y reenvío confiable. El Agente de distribución copia los archivos de instantáneas iniciales de la carpeta de instantáneas y las transacciones almacenadas en las tablas de la base de datos de distribución a los suscriptores.

Los cambios incrementales realizados en el publicador se transfieren a los suscriptores de acuerdo con la programación del Agente de distribución, que se puede ejecutar continuamente para que la latencia sea mínima o a intervalos programados. Puesto que los datos deben cambiarse en el publicador (cuando se utiliza la réplica transaccional sin las opciones de actualización inmediata ni de actualización en cola), se evita que se produzcan conflictos de actualización. Al final, todos los suscriptores disponen de los mismos valores que el publicador. Si se utilizan las opciones de actualización inmediata o de actualización en cola con la réplica transaccional, las actualizaciones pueden realizarse en el suscriptor y, con la actualización en cola, pueden producirse conflictos. Para obtener más información, vea Cómo funcionan las suscripciones actualizables.

En la siguiente ilustración se muestran los principales componentes de la réplica transaccional.

Componentes de réplica transaccionales y flujo de datos

Conjunto de datos inicial

Antes de que un suscriptor de réplica transaccional pueda recibir los cambios incrementales desde un publicador, debe contener tablas con el mismo esquema y los mismos datos que las tablas del publicador. El conjunto de datos inicial es normalmente una instantánea que se crea con el Agente de instantáneas y se distribuye y aplica a través del Agente de distribución. También se puede suministrar el conjunto de datos inicial mediante una copia de seguridad u otro medio, como SQL Server Integration Services. Para obtener más información, vea Inicializar una suscripción.

Cuando se distribuyen y se aplican instantáneas a los suscriptores, sólo se ven afectados los suscriptores que estén esperando instantáneas iniciales. Otros suscriptores de esa publicación (aquellos que ya se han inicializado) no se ven afectados.

Procesamiento simultáneo de instantáneas

La réplica de instantáneas coloca bloqueos compartidos en todas las tablas publicadas como parte de la réplica mientras dure la generación de instantáneas. Así se puede evitar que se realicen actualizaciones en las tablas de publicación. El procesamiento simultáneo de instantáneas, que es el valor predeterminado con la réplica transaccional, no mantiene los bloqueos compartidos durante la generación completa de la instantánea, lo que permite a los usuarios continuar el trabajo sin interrupción mientras la réplica crea los archivos de instantáneas iniciales.

Agente de instantáneas

Los procedimientos por los que el Agente de instantáneas implementa la instantánea inicial en la réplica transaccional son los mismos que se utilizan en la réplica de instantáneas (excepto en lo indicado anteriormente acerca del procesamiento simultáneo de instantáneas). Para obtener más información, vea Cómo funciona la réplica de instantáneas.

Después de generarse los archivos de instantáneas, podrá verlos en la carpeta de instantáneas mediante el Explorador de Microsoft Windows.

Modificar datos y el Agente de registro del LOG

El Agente de registro del LOG se ejecuta en el distribuidor. Normalmente se ejecuta de forma continua, pero también puede hacerlo siguiendo una programación establecida. Al ejecutarse, el Agente de registro del LOG lee primero el registro de transacciones de la publicación (el mismo registro de la base de datos que se utiliza para el seguimiento de las transacciones y la recuperación durante las operaciones normales del motor de base de datos de SQL Server) e identifica las instrucciones INSERT, UPDATE y DELETE, u otras modificaciones efectuadas en los datos de las transacciones que se hayan marcado para ser replicadas. A continuación, el agente copia por lotes dichas transacciones a la base de datos de distribución del distribuidor. El Agente de registro del LOG utiliza el procedimiento almacenado interno sp_replcmds para obtener el siguiente conjunto de comandos marcados para réplica desde el registro. La base de datos de distribución se convierte así en una cola de almacenamiento y reenvío desde la que se envían los cambios a los suscriptores. A la base de datos de distribución sólo se envían las transacciones confirmadas.

El lote completo de transacciones se confirma después de que se ha escrito correctamente en la base de datos de distribución. A continuación de la confirmación de cada lote de comandos en el distribuidor, el Agente de registro del LOG llama a sp_repldone para marcar hasta dónde se ha llegado en la réplica. Por último, el agente marca las filas del registro de transacciones que están listas para ser purgadas. Las filas que están en espera de ser replicadas no se purgan.

Los comandos de transacción se almacenan en la base de datos de distribución hasta que se propagan a todos los suscriptores o hasta que se ha alcanzado el período máximo de retención de distribución. Los suscriptores recibirán las transacciones en el mismo orden en que fueron aplicadas en el publicador.

Agente de distribución

El Agente de distribución se ejecuta en el distribuidor para las suscripciones de inserción y en el suscriptor para las suscripciones de extracción. El Agente mueve las transacciones desde la base de datos de distribución al suscriptor. Si se ha marcado una suscripción para validarla, el Agente de distribución comprueba también si los datos en el publicador y en el suscriptor coinciden. Para obtener más información, vea Validar los datos replicados.

Vea también

Conceptos

Información general de la réplica transaccional

Otros recursos

Características de réplica avanzadas y funciones internas
sp_replcmds (Transact-SQL)
sp_repldone (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005