Compartir a través de


Ejemplo de resolución de conflictos de fusión en función del tipo de suscripción y las prioridades asignadas

Para comprender cómo se resuelven los conflictos según los valores de prioridad asignados y si una suscripción es un servidor o una suscripción de cliente, considere el ejemplo siguiente, que describe una serie de actualizaciones de una fila sobre varias sincronizaciones de mezcla.

Estos son los valores de prioridad inicial de cuatro sitios en una topología básica de replicación de mezcla (un publicador, dos suscriptores con suscripciones de servidor y un suscriptor con una suscripción de cliente).

Sitio Tipo Valor de prioridad
A Publicador 100,00
B Suscripción de servidor 75.00 (asignado)
C Suscripción de servidor 50.00 (asignado)
D Suscripción de cliente 0.00 (valor predeterminado)

Fase 1: Valores iniciales

Inicialmente, el sitio A (el publicador) crea la versión uno de la fila que contiene value='Nebraska', que se replica en los sitios B, C y D durante la siguiente sincronización de fusión. Después de la sincronización, estos son los valores de la fila.

Sitio Tipo Valor de fila
A (Publicador) 100,00 Nebraska
B (Suscripción de servidor) 75,00 Nebraska
C (Suscripción de servidor) 50.00 Nebraska
D (Suscripción de cliente) 0.00 Nebraska

Fase 2: Tanto el publicador como el suscriptor con suscripción al servidor actualizan una fila.

El sitio A actualiza el valor de fila a Texas y el sitio B actualiza el valor de fila a New Jersey. Cuando se produce la siguiente sincronización de mezcla, hay un conflicto entre los sitios A y B. El sitio A gana el conflicto. El valor ganador del conflicto del sitio A se propaga a los sitios B, C y D.

Sitio Valor de prioridad Valor de fila
A (Publicador) 100,00 Texas
B (Suscripción de servidor) 75,00 Texas
C (Suscripción de servidor) 50.00 Texas
D (Suscripción de cliente) 0.00 Texas

Fase 3: Varios cambios realizados en la misma fila

Supongamos que el sitio C actualiza la fila (cambia a Carolina del Norte) y se sincroniza con el publicador. Esto no es un conflicto porque C ya combinó correctamente la última actualización de A (con el valor de fila='Texas' combinado correctamente). A continuación, supongamos que el sitio B actualiza la fila (cambia a Idaho).

Sitio Valor de prioridad Valor de fila
A (Publicador) 100,00 Carolina del Norte
B (Suscripción de servidor) 75,00 Idaho
C (Suscripción de servidor) 50.00 Carolina del Norte
D (Suscripción de cliente) 0.00 Texas

Cuando el sitio B se sincroniza con el publicador, hay un conflicto de actualización. Dado que B y C son suscripciones de servidor y la prioridad de B es mayor que la de C, el sitio B gana el conflicto. Después de combinar los otros dos sitios, el valor de B se propaga a los demás suscriptores.

Sitio Valor de prioridad Valor de fila
A (Publicador) 100,00 Idaho
B (Suscripción de servidor) 75,00 Idaho
C (Suscripción de servidor) 50.00 Idaho
D (Suscripción de cliente) 0.00 Idaho

Fase 4: Suscriptores con suscripciones tanto de servidor como de cliente actualizan la fila.

Supongamos que el sitio D actualiza la fila (cambiándola a Nuevo México) y se sincroniza con el publicador. Supongamos entonces que el sitio B actualiza la fila (la cambia por California).

Sitio Valor de prioridad Valor de fila
A (Publicador) 100,00 Nuevo México
B (Suscripción de servidor) 75,00 California
C (Suscripción de servidor) 50.00 Idaho
D (Suscripción de cliente) 0.00 Nuevo México

Cuando el sitio B se sincroniza con el publicador, hay un conflicto de actualización. A diferencia del ejemplo anterior, dado que D tiene una suscripción de cliente, supone el valor de prioridad del publicador (sitio A) tras la sincronización. Dado que la prioridad de A es mayor que B, B pierde el conflicto; el valor especificado inicialmente en D gana. (Si el suscriptor B se sincronice con A antes de que lo hiciera el suscriptor D, el sitio B habría ganado el conflicto). El sitio D que gana el conflicto se basa en que el publicador no ha realizado ningún cambio o ha recibido otro cambio desde que la versión de la fila actualizada en el Sitio D se sincronizó por última vez. Si algún suscriptor con suscripción de servidor o cualquier otro suscriptor con suscripción de cliente se sincroniza primero, se sigue la regla de prioridad más alta o "el primero en sincronizar con el editor gana".

Los valores finales después de sincronizar todos los sitios se muestran aquí.

Sitio Valor de prioridad Valor de fila
A (Publicador) 100,00 Nuevo México
B (Suscripción de servidor) 75,00 Nuevo México
C (Suscripción de servidor) 50.00 Nuevo México
D (Suscripción de cliente) 0.00 Nuevo México

El orden de sincronización y el valor de prioridad determinan el resultado de conflictos al mezclar suscripciones de servidor y cliente en el mismo nivel de la topología. Este último conjunto de actualizaciones ilustra por qué se debe tener precaución. Aunque el suscriptor tenía el valor de prioridad más bajo de los tres suscriptores, ganó el conflicto porque se sincronizó con el publicador (suponiendo así el valor de prioridad del publicador de 100.00) primero. Si el sitio C (suscripción de servidor con un valor de prioridad de 50.00) entró en Nuevo México en lugar del sitio D, el sitio B (suscripción de servidor con un valor de prioridad de 75.00) habría ganado el conflicto y el resultado habría sido California.