Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La replicación transaccional suele comenzar con una instantánea de los datos y los objetos de la base de datos de publicación. En cuanto se toma la instantánea inicial, los cambios de datos posteriores y las modificaciones de esquema realizadas en el publicador normalmente se entregan al suscriptor a medida que se producen (casi en tiempo real). Los cambios de datos se aplican al suscriptor en el mismo orden y dentro de los mismos límites de transacción que se produjeron en el publicador; por lo tanto, dentro de una publicación, se garantiza la coherencia transaccional.
La replicación transaccional se usa normalmente en entornos de servidor a servidor y es adecuada en cada uno de los casos siguientes:
- Quiere que los cambios incrementales se propaguen a los suscriptores a medida que se produzcan.
- La aplicación requiere una latencia baja entre el momento en que se realizan cambios en el publicador y los cambios llegan al suscriptor.
- La aplicación requiere acceso a estados de datos intermedios. Por ejemplo, si una fila cambia cinco veces, la replicación transaccional permite a una aplicación responder a cada cambio (por ejemplo, desencadenar un desencadenador), no solo el cambio de datos netos a la fila.
- El publicador tiene un gran volumen de actividad de inserción, actualización y eliminación.
- El publicador o suscriptor es una base de datos que no es de SQL Server, como Oracle.
De forma predeterminada, los suscriptores a publicaciones transaccionales deben tratarse como de solo lectura, ya que los cambios no se propagan al publicador. Sin embargo, la replicación transaccional ofrece opciones que permiten actualizaciones en el Suscriptor.
Funcionamiento de la replicación transaccional
La replicación transaccional se implementa mediante el Agente de instantáneas de SQL Server, el Agente de registro del Log y el Agente de distribución. El Agente de instantáneas prepara los archivos de instantánea que contienen el esquema y los datos de 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 Reader supervisa el registro de transacciones de cada base de datos configurada para la replicación transaccional y copia las transacciones marcadas para la replicación desde el registro de transacciones en la base de datos de distribución, que actúa como una cola confiable de almacenamiento y reenvío. El Agente de distribución copia los archivos iniciales de instantáneas 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 por el publicador se transmiten a los suscriptores según el calendario del Agente de Distribución, que puede ejecutarse continuamente para una latencia mínima o a intervalos programados. Dado que se deben realizar cambios en los datos en el publicador (cuando se usa la replicación transaccional sin opciones de actualización inmediata o de actualización en cola), se evitan conflictos de actualización. En última instancia, todos los suscriptores lograrán los mismos valores que el publicador. Si se usan opciones de actualización inmediata o de actualización en cola con replicación transaccional, se pueden realizar actualizaciones en el suscriptor y, con la actualización en cola, pueden producirse conflictos.
En la ilustración siguiente se muestran los componentes principales de la replicación transaccional.
Conjunto de datos inicial
Antes de que un nuevo suscriptor de replicación transaccional pueda recibir cambios incrementales de un publicador, el suscriptor debe contener tablas con el mismo esquema y datos que las tablas del publicador. El conjunto de datos inicial suele ser una instantánea creada por el Agente de instantáneas y distribuida y aplicada por el Agente de distribución. El conjunto de datos inicial también se puede proporcionar a través de una copia de seguridad u otros medios, como SQL Server Integration Services.
Cuando las instantáneas se distribuyen y aplican a los suscriptores, solo aquellos suscriptores que están esperando las instantáneas iniciales se ven afectados. Otros suscriptores de esa publicación (los que ya se han inicializado) no se ven afectados.
Procesamiento simultáneo de instantáneas
La replicación de instantáneas coloca bloqueos compartidos en todas las tablas publicadas como parte de la replicación mientras se genera la instantánea. Esto puede impedir que se realicen actualizaciones en las tablas de publicación. El procesamiento concurrente de capturas, que es el valor predeterminado en la replicación transaccional, no mantiene los bloqueos compartidos durante toda la generación de la captura, lo que permite a los usuarios seguir trabajando sin interrupciones mientras la replicación crea los archivos de captura iniciales.
Agente de instantáneas
Los procedimientos por los que el Agente de instantáneas implementa la instantánea inicial en la replicación transaccional son los mismos procedimientos que se usan en la replicación de instantáneas (excepto lo descrito anteriormente con respecto al procesamiento simultáneo de instantáneas).
Una vez generados los archivos de instantánea, puede verlos en la carpeta de instantáneas mediante el Explorador de Microsoft Windows.
Modificar datos y el Agente lector de registros
El Log Reader Agent se ejecuta en el distribuidor; normalmente se ejecuta de forma continua, pero también se puede ejecutar de acuerdo con una programación que usted establezca. Al ejecutarse, el Agente de registro del Log Reader lee primero el registro de transacciones de publicación (el mismo registro de base de datos usado para el seguimiento de 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 realizadas en los datos de las transacciones que se han marcado para la replicación. A continuación, el agente copia esas transacciones en lotes en la base de datos de distribución en el distribuidor. El Agente de Lectura de Registros usa el procedimiento almacenado interno sp_replcmds para obtener el siguiente conjunto de comandos marcados para la replicación desde el log. A continuación, la base de datos de distribución se convierte en la cola de almacenamiento y reenvío desde la que se envían los cambios a los suscriptores. Solo las transacciones confirmadas se envían a la base de datos de distribución.
Una vez que todo el lote de transacciones se ha escrito correctamente en la base de datos de distribución, se confirma. Después de la confirmación de cada lote de comandos en el Distribuidor, el Agente lector del Log llama a sp_repldone para marcar dónde se completó la replicación por última vez. Por último, el agente marca las filas del registro de transacciones que están listas para purgarse. Las filas que siguen esperando que se repliquen 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 alcanza el período máximo de retención de distribución. Los suscriptores reciben transacciones en el mismo orden en que se aplicaron 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 de la base de datos de distribución al suscriptor. Si una suscripción está marcada para la validación, el Agente de distribución también comprueba si los datos coinciden con el publicador y el suscriptor.
Tipos de publicación
La replicación transaccional ofrece cuatro tipos de publicación:
| Tipo de publicación | Descripción |
|---|---|
| Publicación transaccional estándar | Adecuado para topologías en las que todos los datos del suscriptor son de solo lectura (la replicación transaccional no aplica esto en el suscriptor). Las publicaciones transaccionales estándar se crean de forma predeterminada al usar Transact-SQL o Objetos de administración de replicación (RMO). Al usar el Asistente para nueva publicación, se crean seleccionando Publicación transaccional en la página Tipo de publicación. Para obtener más información sobre la creación de publicaciones, vea Publicar datos y objetos de base de datos. |
| Publicación transaccional con suscripciones actualizables | Las características de este tipo de publicación son: - Cada ubicación tiene datos idénticos, con un publicador y un suscriptor. - Es posible actualizar filas en el suscriptor. - Esta topología es más adecuada para entornos de servidor que requieren alta disponibilidad y escalabilidad de lectura. Para obtener más información, consulte Suscripciones actualizables. |
| Topología del mismo nivel | Las características de este tipo de publicación son: - Cada ubicación tiene datos idénticos y actúa como publicador y suscriptor. - La misma fila solo se puede cambiar en una ubicación a la vez. - Admite la detección de conflictos. - Esta topología es más adecuada para entornos de servidor que requieren alta disponibilidad y escalabilidad de lectura. Para obtener más información, consulte Replicación transaccional entre pares. |
| Replicación transaccional bidireccional | Las características de este tipo de publicación son: La replicación bidireccional es similar a la replicación punto a punto, pero no proporciona resolución de conflictos. Además, la replicación bidireccional está limitada a 2 servidores. Para obtener más información, consulte Replicación transaccional bidireccional. |