Partilhar via


Replicação por Fusão

Aplica-se a:SQL Server

A replicação de mesclagem, tal como a replicação transacional, normalmente começa com uma cópia instantânea dos objetos do banco de dados de publicação e dos dados. As alterações de dados subsequentes e as modificações de esquema feitas no Editor e nos Subscritores são controladas com gatilhos. O Assinante sincroniza com o Publicador quando conectado à rede e troca todas as linhas que foram alteradas entre o Editor e o Assinante desde a última vez que a sincronização ocorreu.

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

  • Vários Subscritores podem atualizar os mesmos dados em vários momentos e propagar essas alterações ao Editor e a outros Subscritores.

  • Os Subscritores têm de receber dados, fazer alterações offline e, posteriormente, sincronizar as alterações com o Editor e outros Subscritores.

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

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

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

A replicação de mesclagem permite que vários sites trabalhem 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 eventualmente ter sido atualizados pelo Publisher e por mais de um Assinante. Portanto, conflitos podem ocorrer quando as atualizações são mescladas e a replicação por 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 for filtrada ou usar filtros estáticos, o Snapshot Agent criará um único snapshot. Se a publicação usar filtros parametrizados, o Snapshot Agent criará um instantâneo para cada partição de dados. O Merge Agent aplica as cópias instantâneas iniciais aos assinantes. Ele também mescla alterações incrementais de dados que ocorreram no Publicador ou nos Assinantes depois que o instantâneo inicial foi criado e deteta e resolve quaisquer conflitos de acordo com as regras configuradas.

Para rastrear alterações, a replicação de mesclagem (e a replicação transacional com assinaturas de atualização em espera) deve ser capaz de 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 do tipo de dados uniqueidentifier com a ROWGUIDCOL propriedade definida (caso em que essa coluna é usada). Se a tabela for retirada da publicação, a rowguid coluna será removida, se uma coluna existente tiver sido usada para rastreamento, a coluna não será removida. Um filtro não deve incluir o rowguidcol usado pela replicação para identificar linhas. A função newid() é disponibilizada como padrão para a coluna. No entanto, os clientes podem fornecer um GUID para cada linha, se necessário. No entanto, não forneça valor 00000000-0000-0000-0000-000000000000.

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

Diagrama dos componentes da replicação por mesclagem e fluxo de dados.

Configurar a criptografia TLS 1.3

O SQL Server 2025 (17.x) introduz o suporte TDS 8.0 para replicação de fusões, que inclui:

  • Configuração de agentes de replicação para usar encriptação TLS 1.3 entre instâncias do SQL Server 2025 (17.x) e também entre SQL Server 2025 (17.x) e Azure SQL Managed Instance.
  • Encriptação padrão para comunicação entre servidores ligados de instâncias do SQL Server 2025 (17.x) numa topologia de replicação. Os servidores ligados no SQL Server 2025 (17.x) utilizam o driver OLE DB v19, que usa encriptação por defeito Encrypt=Mandatory.

Nesta secção