Compartilhar via


Replicação de mesclagem

A replicação de mesclagem, como a replicação transacional, normalmente começa com um instantâneo dos objetos e dados do banco de dados de publicação. Mudanças subsequentes nos dados e modificações de esquema feitas no Publicador e nos Assinantes são rastreadas com gatilhos. O Assinante sincroniza-se com o Publicador ao conectar-se à rede e troca todas as linhas que foram modificadas entre o Publicador e o Assinante desde a última sincronização ocorrida.

A replicação de mesclagem normalmente é usada em ambientes de cliente-servidor. A replicação de mesclagem é apropriada em qualquer uma das seguintes situações:

  • Vários Assinantes podem atualizar os mesmos dados em vários momentos e propagar essas alterações para o Publicador e para outros Assinantes.

  • Os assinantes precisam receber dados, fazer alterações offline e sincronizar alterações posteriormente com o Publicador e outros Assinantes.

  • Cada Assinante requer uma partição diferente de dados.

  • Conflitos podem ocorrer e, quando ocorrem, você precisa da capacidade de detectá-los e resolvê-los.

  • O aplicativo requer uma mudança líquida de dados em vez de acesso a estados intermediários de dados. Por exemplo, se uma linha for alterada cinco vezes em um Assinante antes de sincronizar com um Publicador, a linha será alterada apenas uma vez no Publicador para refletir a alteração de dados líquidos (ou seja, o quinto valor).

A replicação de mesclagem permite que vários sites funcionem de forma autônoma e, posteriormente, mesclem atualizações em um único resultado uniforme. Como as atualizações são feitas em mais de um nó, os mesmos dados podem ter sido atualizados pelo Publicador e por mais de um Assinante. Portanto, podem ocorrer conflitos quando as atualizações são mescladas, e a replicação de mesclagem fornece várias maneiras de lidar com conflitos.

A replicação de mesclagem é implementada pelo SQL Server Snapshot Agent e pelo Merge Agent. Se a publicação não estiver filtrada ou usar filtros estáticos, o Snapshot Agent criará um único instantâneo. Se a publicação usar filtros parametrizados, o Snapshot Agent criará um instantâneo para cada partição de dados. O Agente de Mesclagem aplica as capturas iniciais aos assinantes. Ele também mescla alterações de dados incrementais que ocorreram no Publicador ou assinantes após a criação do instantâneo inicial e detecta e resolve quaisquer conflitos de acordo com as regras configuradas.

Para rastrear as alterações, a replicação de mesclagem (e a replicação transacional, com assinaturas de atualização em fila) deve poder identificar exclusivamente cada linha em cada tabela publicada. Para realizar essa replicação de mesclagem, adiciona a coluna rowguid a cada tabela, a menos que a tabela já tenha uma coluna de tipo uniqueidentifier de dados com o ROWGUIDCOL conjunto de propriedades (nesse caso, essa coluna é usada). Se a tabela for removida da publicação, a rowguid coluna será removida; se uma coluna existente tiver sido usada para acompanhamento, a coluna não será removida. Um filtro não deve incluir o rowguidcol usado por replicação para identificar linhas. A função newid() é fornecida como padrão para a coluna rowguid, porém os clientes podem fornecer um guid para cada linha, se necessário. No entanto, não forneça o valor 00000000-0000-0000-0000-00000000000000.

O diagrama a seguir mostra os componentes usados na replicação de mesclagem.

Mesclar componentes de replicação e fluxo de dados