Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Quando um Publicador e um Assinante estão conectados e a sincronização ocorre, o Merge Agent deteta se há conflitos. Se forem detetados conflitos, o Merge Agent usa um resolvedor de conflitos (que é especificado quando um artigo é adicionado a uma publicação) para determinar quais dados são aceitos e propagados para outros sites.
A replicação de mesclagem oferece uma variedade de métodos para detetar e resolver conflitos. Para a maioria dos aplicativos, o método padrão é apropriado:
- Se ocorrer um conflito entre um Editor e um Assinante, a alteração do Editor será mantida e a alteração do Assinante será descartada.
- Se ocorrer um conflito entre dois Subscritores que utilizam subscrições de cliente (o tipo predefinido para subscrições pull), a alteração do primeiro Subscritor para sincronizar com o Publicador é mantida e a alteração do segundo Subscritor é descartada. Para obter informações sobre como especificar assinaturas de cliente e servidor, consulte Especificar um tipo de assinatura de mesclagem e prioridade de resolução de conflitos (SQL Server Management Studio).
- Se ocorrer um conflito entre dois Subscritores que utilizam subscrições de servidor (o tipo predefinido para subscrições push), a alteração do Subscritor com o valor de prioridade mais elevado é mantida e a alteração do segundo Subscritor é descartada. Se os valores de prioridade forem iguais, a alteração do primeiro Assinante para sincronizar com o Editor será mantida.
Observação
Embora um Assinante sincronize com o Editor, conflitos geralmente ocorrem entre atualizações feitas por Assinantes diferentes, em vez de entre um Assinante e o Editor.
O comportamento de deteção e resolução de conflitos depende das seguintes opções, descritas neste tópico:
Se especificar rastreamento ao nível da coluna, ao nível da linha ou ao nível do registro lógico.
Se você especifica o mecanismo de resolução baseado em prioridade padrão ou especifica um resolvedor de artigo. Um resolutor de artigos pode ser:
- Um manipulador de lógica de negócios escrito em código gerenciado.
- Um resolvedor personalizado baseado em COM.
- Um resolvedor baseado em COM fornecido pela Microsoft.
Se o mecanismo de resolução padrão for usado, o comportamento será determinado pelo tipo de assinatura usada: cliente ou servidor.
Deteção de conflitos
Se uma alteração de dados se qualifica como um conflito ou não, depende do tipo de controle de conflitos definido para um artigo:
- Se selecionar o rastreamento de conflitos a nível de coluna, será considerado um conflito se forem feitas alterações na mesma coluna na mesma linha em mais de um nó de replicação.
- Se selecionar rastreio ao nível da linha, será considerado um conflito se forem feitas alterações em qualquer coluna na mesma linha em mais de um nó de replicação (as colunas afetadas nas linhas correspondentes não precisam necessariamente ser as mesmas).
- Se você selecionar o rastreamento no nível de registro lógico, será considerado um conflito se forem feitas alterações em qualquer linha do mesmo registro lógico em mais de um nó de replicação (as colunas afetadas nas linhas correspondentes não precisam ser as mesmas).
Para obter mais informações, consulte Detetando e resolvendo conflitos em registros lógicos.
Para especificar o nível de rastreamento e resolução de conflitos para um artigo, veja Especificar propriedades de replicação de mesclagem.
Resolução de Conflitos
Depois que um conflito é detetado, o Merge Agent inicia o resolvedor de conflitos selecionado e usa o resolvedor para determinar o vencedor do conflito. A linha vencedora é aplicada no Editor e no Assinante, e os dados da linha perdedora são gravados numa tabela de conflitos. Os conflitos são resolvidos imediatamente após a execução do resolvedor, a menos que você opte por resolver conflitos interativamente.
Resolver conflitos de replicação de mesclagem
Aplica-se a:SQL Server
Quando um Publicador e um Assinante estão conectados e a sincronização ocorre, o Merge Agent deteta se há conflitos. Se forem detetados conflitos, o Merge Agent usa um resolvedor de conflitos para determinar quais dados serão aceitos e propagados para outros sites.
Observação
Embora um Assinante sincronize com o Editor, normalmente ocorrem conflitos entre atualizações feitas em Assinantes diferentes, em vez de atualizações feitas num Assinante e no Editor.
A replicação de mesclagem oferece uma variedade de métodos para detetar e resolver conflitos. Para a maioria dos aplicativos, o método padrão é apropriado:
Se ocorrer um conflito entre um Editor e um Assinante, a alteração do Editor será mantida e a alteração do Assinante será descartada.
Se ocorrer um conflito entre dois Subscritores que utilizam subscrições de cliente (o tipo predefinido para subscrições pull), a alteração do primeiro Subscritor para sincronizar com o Publicador é mantida e a alteração do segundo Subscritor é descartada. Para obter informações sobre como especificar assinaturas de cliente e servidor, consulte Especificar um tipo de assinatura de mesclagem e prioridade de resolução de conflitos (SQL Server Management Studio).
Se ocorrer um conflito entre dois Subscritores que utilizam subscrições de servidor (o tipo predefinido para subscrições push), a alteração do Subscritor com o valor de prioridade mais elevado é mantida e a alteração do segundo Subscritor é descartada. Se os valores de prioridade forem iguais, a alteração do primeiro Assinante para sincronizar com o Editor será mantida.
Para obter mais informações sobre deteção e resolução de conflitos para replicação de mesclagem, consulte Advanced Merge Replication Conflict Detection and Resolution.
Tipos de resolvedores
Na replicação de mesclagem, a resolução de conflitos ocorre no nível do artigo. Para publicações compostas por vários artigos, você pode ter diferentes resolvedores de conflitos servindo artigos diferentes, ou o mesmo resolvedor de conflitos servindo um artigo, vários artigos ou todos os artigos que compõem uma publicação.
Se você planeja usar o resolvedor de conflitos baseado em prioridade padrão, não é necessário definir a propriedade do resolvedor de um artigo. Se quiser usar um resolvedor de artigo em vez do resolvedor padrão, defina a propriedade do resolvedor para o artigo que o usará selecionando um resolvedor disponível no Publisher. Qualquer informação específica que precise ser passada para o resolvedor também pode ser especificada na propriedade de informações do resolvedor.
A replicação de mesclagem oferece quatro tipos de solucionadores de conflitos.
O resolvedor de conflitos baseado em prioridade padrão
O mecanismo de resolução padrão se comporta de forma diferente, dependendo se uma assinatura é uma assinatura de cliente ou uma assinatura de servidor. Você atribui valores de prioridade a Assinantes individuais que usam assinaturas de servidor; As alterações feitas no nó com a prioridade mais alta vencem quaisquer conflitos. Para subscrições de cliente, a primeira alteração registada no Publicador resolve o conflito.
Depois que uma assinatura é criada, ela não pode ser alterada de um tipo para outro.
Um manipulador de lógica de negócios
O framework do manipulador de lógica empresarial permite que o utilizador escreva um assembly de código gerido que é invocado durante o processo de sincronização de mesclagem. O assembly inclui lógica de negócios que pode responder a conflitos e várias outras condições durante a sincronização. Para obter mais informações, consulte Executar lógica de negócios durante a sincronização de mesclagem.
Um resolvedor personalizado baseado em COM
A replicação de mesclagem fornece uma API para escrever resolvedores como objetos COM em linguagens como Microsoft Visual C++ ou Microsoft Visual Basic. Para obter mais informações, consulte COM-Based Resolvedores Personalizados.
Um resolvedor baseado em COM fornecido pela Microsoft
O Microsoft SQL Server inclui vários resolvedores baseados em COM. Para obter mais informações, consulte Microsoft COM-Based Resolvers.
Para obter informações sobre como selecionar o tipo apropriado de resolvedor, consulte Escolher um resolvedor.
Observação
Alguns resolvedores de artigos são escritos para lidar com conflitos apenas para determinadas operações. Por exemplo, um resolvedor pode lidar com atualizações, mas não insere ou exclui. O resolvedor de conflitos baseado em prioridade padrão lida com quaisquer conflitos não tratados pelo resolvedor de artigos.
Para especificar um tipo de subscrição de mesclagem e definir a prioridade na resolução de conflitos, consulte
SQL Server Management Studio: Especificar um Tipo de Subscrição de Mesclagem e Prioridade de Resolução de Conflitos (SQL Server Management Studio)
Programação de replicação Transact-SQL e programação de RMO (Objetos de Gestão de Replicação): Criar uma Subscrição de Recolha e Criar uma Subscrição de Envio
Resolvedor interativo
A replicação fornece uma interface de usuário do Interactive Resolver que pode ser usada em conjunto com o resolvedor de conflitos baseado em prioridade padrão ou com um resolvedor de artigos. Ao executar a sincronização sob demanda por meio do Gerenciador de Sincronização do Microsoft Windows, o Resolvedor Interativo exibe dados de conflito em tempo de execução e permite que você escolha como resolver conflitos. Para obter mais informações sobre como habilitar a resolução interativa e iniciar o resolvedor interativo, consulte Resolução interativa de conflitos.
Visualizando conflitos
A maneira mais simples de exibir conflitos é usar o Visualizador de Conflitos de Replicação, disponível no SQL Server Management Studio (o SQL Server também fornece procedimentos armazenados que permitem que as tabelas de conflitos sejam consultadas.). O Visualizador de Conflitos e o Resolvedor Interativo são ferramentas semelhantes, mas o Resolvedor Interativo permite resolver conflitos à medida que a sincronização ocorre, enquanto o Visualizador de Conflitos foi projetado para exibir conflitos depois que eles forem resolvidos. Se os metadados de conflito ainda estiverem disponíveis nas tabelas do sistema (os metadados de conflito são retidos por 14 dias por padrão), você poderá substituir os resultados da resolução de conflitos no Visualizador de Conflitos, mas se a intervenção direta for necessária regularmente, considere o uso do Resolvedor Interativo.
Observação
Os conflitos que envolvem registros lógicos não são exibidos no Visualizador de Conflitos. Para exibir informações sobre esses conflitos, use procedimentos armazenados de replicação. Para obter mais informações, consulte Exibir informações de conflito para publicações de mesclagem (replicação Transact-SQL programação).
O Visualizador de conflitos exibe informações de três tabelas do sistema:
A replicação cria uma tabela de conflito para cada tabela em um artigo de mesclagem, com um nome no formato MSmerge_conflict_<PublicationName>_<ArticleName>.
As tabelas de conflito têm a mesma estrutura que as tabelas nas quais se baseiam. Uma linha em uma dessas tabelas consiste na versão perdida de uma linha de conflito (a versão vencedora da linha está na tabela do usuário real).
A tabela MSmerge_conflicts_info fornece informações sobre cada conflito, incluindo o tipo de conflito.
A tabela sysmergearticles identifica quais tabelas de usuário têm tabelas de conflito e fornece informações sobre as tabelas de conflito.
Por padrão, as informações de conflito são armazenadas:
No Editor e no Assinante, se o nível de compatibilidade da publicação for 90RTM ou superior.
No Editor de Publicação, se o nível de compatibilidade da publicação for inferior a 80RTM.
No Publisher se os Assinantes estiverem executando o SQL Server Compact. Os dados de conflito não podem ser armazenados em assinantes do SQL Server Compact.
Para visualizar conflitos
SQL Server Management Studio: Exibir e resolver conflitos de dados para publicações de mesclagem (SQL Server Management Studio)
Replicação Transact-SQL programação: Exibir informações de conflito para publicações de mesclagem (replicação Transact-SQL programação)