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.
Quando um Publicador e um Assinante estão conectados e ocorre a sincronização, o Merge Agent detecta se há conflitos. Se forem detectados conflitos, o Merge Agent usará 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.
Observação
Embora um Assinante sincronize com o Publicador, normalmente ocorrem conflitos entre atualizações feitas em assinantes diferentes, em vez de atualizações sendo feitas em um Assinante e no Publicador.
O comportamento de detecção e resolução de conflitos depende das seguintes opções, que são descritas neste tópico:
Se você especificar o acompanhamento no nível da coluna, o acompanhamento em nível de linha ou o acompanhamento lógico no nível do registro.
Se você especificar o mecanismo de resolução baseado em prioridade padrão ou especificar um resolvedor de artigo. Um resolvedor de artigo 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 ainda mais pelo tipo de assinatura usada: cliente ou servidor.
Detecçã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 você selecionar o rastreamento de conflitos no nível da coluna, será considerado um conflito se a mesma coluna na mesma linha for alterada em mais de um nó de replicação.
Se você selecionar o acompanhamento em nível de linha, isso é considerado um conflito se forem feitas alterações em colunas na mesma linha em mais de um nó de replicação (as colunas afetadas nas linhas correspondentes não precisam ser as mesmas).
Se você selecionar o acompanhamento no nível do registro lógico, será considerado um conflito se forem feitas alterações em qualquer linha de um mesmo registro lógico em mais de um nó de replicação (as colunas afetadas nas linhas correspondentes não precisarão ser as mesmas).
Para obter mais informações, consulte Detectar e resolver conflitos em registros lógicos.
Para especificar o nível de controle e resolução de conflitos para um artigo, consulte Especificar o nível de controle e resolução de conflitos para artigos de mesclagem.
Resolução de Conflitos
Depois que um conflito é detectado, o Merge Agent inicia o resolvedor de conflitos selecionado e usa o resolvedor para determinar o vencedor do conflito. A linha vencedora é aplicada no Distribuidor e no Assinante, e os dados da linha perdedora são gravados em uma tabela de conflitos. Os conflitos são resolvidos imediatamente após a execução do resolvedor, a menos que você selecione resolver conflitos interativamente.
Tipos de resolvedor
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 resolvedores de conflitos diferentes que atendem a artigos diferentes ou o mesmo resolvedor de conflitos que atende a 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 precisará definir a propriedade resolvedor de um artigo. Se você quiser usar um resolvedor de artigo em vez do resolvedor padrão, deverá definir a propriedade resolver para o artigo que a usará selecionando um resolvedor disponível no Publicador. Qualquer informação específica que precise ser passada para o resolvedor também pode ser especificada na propriedade de informações de resolvedor.
A replicação por mesclagem oferece quatro tipos de resolvedores 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 resolvem quaisquer conflitos. Para assinaturas de cliente, a primeira alteração gravada no sistema do 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
A estrutura do manipulador de lógica de negócios permite que você escreva um assembly de código gerenciado que é chamado durante o processo de sincronização de mesclagem. O módulo inclui lógica de negócios que pode responder a conflitos e a uma série de 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 API de replicação de mesclagem permite 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 Resolvers Microsoft COM-Based.
Para obter informações sobre como selecionar o tipo apropriado de resolvedor, consulte Escolher um Resolvedor.
Observação
Alguns resolvedores de artigo são escritos para lidar com conflitos apenas para determinadas operações. Por exemplo, um resolvedor pode lidar com atualizações, mas não inserções ou exclusões. O resolvedor de conflitos baseado em prioridade padrão manipula todos os conflitos não tratados pelo resolvedor do artigo.
Para especificar um tipo de assinatura de mesclagem e uma prioridade de resolução de conflitos, consulte
SQL Server Management Studio: Especificar um Tipo de Assinatura de Mesclagem e Prioridade de Resolução de Conflitos (SQL Server Management Studio)
Replicação Transact-SQL programação e programação RMO (Replication Management Objects): Criar uma assinatura pull e criar uma assinatura push
Resolvedor Interativo
A replicação fornece uma interface do usuário do Resolvedor Interativo que pode ser usada em conjunto com o resolvedor de conflitos baseado em prioridade padrão ou um resolvedor de artigo. Ao executar a sincronização sob demanda por meio do Microsoft Windows Synchronization Manager, 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 conflito 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 é projetado para exibir conflitos depois que eles são resolvidos. Se os metadados de conflito ainda estiverem disponíveis nas tabelas do sistema (metadados de conflito são mantidos por 14 dias por padrão), você poderá substituir os resultados de resolução de conflitos no Visualizador de Conflitos, mas se a intervenção direta for regularmente necessária, considere usar o Resolvedor Interativo.
Observação
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 conflitos 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 perdedora de uma linha de conflito (a versão vencedora da linha está na tabela de 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 Publicador e no assinante, se o nível de compatibilidade da publicação for 90RTM ou superior.
No Publicador, se o nível de compatibilidade da publicação for inferior a 80 RTM.
No Publicador, se os Assinantes estiverem executando o SQL Server Compact. Os dados de conflito não podem ser armazenados em Assinantes Compactos do SQL Server.
Para exibir conflitos
SQL Server Management Studio: exibir e resolver conflitos de dados para publicações de mesclagem (SQL Server Management Studio)
Programação de Transact-SQL de replicação: exibir informações de conflito para publicações de mesclagem (programação de Transact-SQL de replicação)