Partilhar via


Exemplo de solução de conflito de mesclagem baseado em tipo de assinatura e prioridades atribuídas

Para entender como os conflitos são solucionados de acordo com os valores de prioridades atribuídos e no caso de uma assinatura ser uma assinatura de servidor ou de cliente, considere o exemplo a seguir, que descreve uma série de atualizações em uma linha em diversas sincronizações de mesclagem.

Aqui estão os valores inicias de prioridade para quatro sites em uma topologia de replicação de mesclagem (um Publicador, dois Assinantes com assinaturas de servidor e um Assinante com assinatura de cliente).

Site

Tipo

Valor de prioridade

A

Publisher

100.00

B

Server Subscription

75.00 (atribuído)

C

Server Subscription

50.00 (atribuído)

D

Client Subscription

0.00 (padrão)

Fase 1: Valores iniciais

Inicialmente, o Site A (o Publicador) cria a versão um da linha que contém o valor ='Nebraska', o qual é replicado para os Sites B, C e D durante a próxima sincronização de mesclagem. Depois da sincronização, aqui estão os valores da linha.

Site

Valor de prioridade

Valor de linha

A (Publicador)

100.00

Nebraska

B (Assinatura de Servidor )

75.00

Nebraska

C (Assinatura de Servidor)

50.00

Nebraska

D (Assinatura de Cliente)

0.00

Nebraska

Fase 2: O Publicador e o Assinante com Assinatura de Servidor ambos atualizam a linha

O site A atualiza o valor de linha para Texas e o site B atualiza o valor de linha para Nova Jersey. Quando a próxima sincronização de mesclagem ocorre, há um conflito entre os sites A e B. O site A vence o conflito. O valor do vencedor de conflito do site A é propagado para os sites B, C e D.

Site

Valor de prioridade

Valor de linha

A (Publicador)

100.00

Texas

B (Assinatura de Servidor)

75.00

Texas

C (Assinatura de Servidor)

50.00

Texas

D (Assinatura de Cliente)

0.00

Texas

Fase 3: Diversas alterações feitas na mesma linha

Suponha que o site C atualize a linha (altera para Carolina do Norte) e sincroniza com o Publicador. Isto não é um conflito porque C já se mesclou com êxito à última atualização de A (com o valor de linha='Texas' mesclado com êxito). Então, suponha que o site B atualiza a linha (altera para Idaho).

Site

Valor de prioridade

Valor de linha

A (Publicador)

100.00

Carolina do Norte

B (Assinatura de Servidor )

75.00

Idaho

C (Assinatura de Servidor)

50.00

Carolina do Norte

D (Assinatura de Cliente )

0.00

Texas

Quando o site B sincronizar com o Publicador, há um conflito de atualização. Como B e C são assinaturas de servidor e a prioridade de B é maior do que a de C, o site B vence o conflito. Depois que os outros dois sites também são mesclados, o valor de B é propagado para outros Assinantes.

Site

Valor de prioridade

Valor de linha

A (Publicador)

100.00

Idaho

B (Assinatura de Servidor)

75.00

Idaho

C (Assinatura de Servidor)

50.00

Idaho

D (Assinatura de Cliente)

0.00

Idaho

Fase 4: Assinantes com assinaturas de servidor e cliente ambos atualizam a linha

Suponha que o site D atualize a linha (altere para New Mexico) e sincronize com o Publicador. Em seguida, suponha que o site B atualize a linha (altere para Califórnia).

Site

Valor de prioridade

Valor de linha

A (Publicador)

100.00

New Mexico

B (Assinatura de Servidor)

75.00

Califórnia

C (Assinatura de Servidor)

50.00

Idaho

D (Assinatura de Cliente)

0.00

New Mexico

Quando o site B sincronizar com o Publicador, há um conflito de atualização. Diferente do exemplo anterior, porque D tem uma assinatura de cliente, ele assume o valor de prioridade do Publicador (site A) na sincronização. Como a prioridade de A é maior do que a de B, B perde o conflito e o valor inserido inicialmente em D vence. (Se o Assinante B tivesse sincronizado com A antes de Assinante D, o site B teria vencido o conflito.) O Site D que vence o conflito se apóia no Publicador sem ter feito uma alteração ou recebido outra alteração, desde que a versão da linha atualizada no site D foi sincronizada pela última vez. Se qualquer Assinante com assinatura de servidor ou qualquer Assinante com assinatura de cliente sincronizar primeiro, a regra de maior prioridade ou "o primeiro no Publicador vence" será seguida.

Os valores finais após todos os sites serem sincronizados são exibidos aqui.

Site

Valor de prioridade

Valor de linha

A (Publicador)

100.00

New Mexico

B (Assinatura de Servidor)

75.00

New Mexico

C (Assinatura de Servidor)

50.00

New Mexico

D (Assinatura de Cliente)

0.00

New Mexico

A ordem de sincronização e o valor da prioridade determinam o resultado dos conflitos ao misturar as assinaturas do servidor e cliente no mesmo nível em sua topologia. Esta última definição de atualizações ilustra por que devemos ter precaução. Embora o Assinante tenha o menor valor de prioridade dos três Assinantes, ele venceu o conflito porque sincronizou com o Publicador (assumindo assim o valor de prioridade do Publicador de 100.00) primeiro. Se o site C (assinatura de servidor com valor de prioridade 50.00) tivesse inserido New Mexico no lugar do site D, o site B (assinatura de servidor com valor de prioridade 75.00) teria vencido o conflito e o resultado teria sido Califórnia.