Temos um cliente que ao tentar sincronizar um cliente (assinante) ao servidor (editor), recebe o seguinte erro:
2012-11-30 21:03:33.334 Percent Complete: 18
2012-11-30 21:03:33.334 Data validation failed for one or more articles. When troubleshooting, check the output log files for any errors that may be preventing data from being synchronized properly. Note that when error compensation or delete tracking functionalities are disabled for an article, non-convergence can occur.
2012-11-30 21:03:33.334 OLE DB Distributor 'EnvisionSQL\SQL2005': {call sys.sp_MSadd_merge_history90 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
2012-11-30 21:03:33.506 Percent Complete: 0
2012-11-30 21:03:33.506 Category:NULL
Source: Merge Process
Number: -2147200953
Message: Data validation failed for one or more articles. When troubleshooting, check the output log files for any errors that may be preventing data from being synchronized properly. Note that when error compensation or delete tracking functionalities are disabled for an article, non-convergence can occur.
2012-11-30 21:03:33.521 Percent Complete: 0
2012-11-30 21:03:33.521 Category:NULL
Source: Merge Process
Number: -2147200953
Message: Article 'TB_CORE_DAILY' failed data validation (rowcount only). Rowcount actual: 80367, expected: 0.
2012-11-30 21:03:33.537 Percent Complete: 0
2012-11-30 21:03:33.537 Category:NULL
Source: Merge Process
Number: -2147200953
Message: Article 'TB_CORE_INSPECTION_VIOL' failed data validation (rowcount only). Rowcount actual: 19451, expected: 0.
O servidor é 2005 e o mecanismo de banco de dados local é 2005 express.
O que poderia estar causando a incompatibilidade das contagens de linhas reais/esperadas?
Estou tentando fazer mais pesquisas sobre isso, então pensei em reacender esta discussão para ver se mais alguém tem alguma opinião.
Entendo como a rowcount
validação funciona, mas por que receberia um valor esperado de 0 em uma tabela que possui dados conhecidos?
Verifique se você tem algum conflito entre o assinante e o editor e tente resolver esses conflitos.
Posso ver em suas mensagens de erro que
data validation
não foi possível fazer isso, embora, como você disse , as tabelaspublisher
e as tenham exatamente o mesmo arquivo .subscriber
rowcount
Eu não acho que seria um conflito, embora você possa verificar isso.
para quaisquer erros relacionados à
could not be verified
replicação de mesclagem no sql 2005, algo assim:Tudo depende de como você configurou sua replicação de mesclagem. por exemplo, se você tiver tudo dividido, o que significa que cada assinante obtém apenas seu próprio compartilhamento e para verificar tudo o que eles precisam para se conectar ao servidor principal, executar um instantâneo não é grande coisa na maioria das vezes.
se, no entanto, todos tiverem tudo em suas máquinas, a execução do snapshot pode demorar um pouco. Eu tento não chegar a isso, sempre que possível.
há algumas coisas que eu poderia dizer, provavelmente teria que postar mais de uma resposta.
Na replicação de mesclagem, todas as coisas que você precisa ver estão dentro dos próprios bancos de dados.
faça o que fizer, faça backup de todas as tabelas antes de fazê-lo.
por exemplo:
digamos que eu tenho um servidor chamado
ODS
e todos os meus assinantes são nomeadosMERLIN SOMETHING
meu banco de dados é chamadoconcord_ord
Veja isso:
então vá para seus assinantes e verifique os dados lá: por exemplo:
Eu sei que é muito para assumir. Mas vale a pena, se você quiser evitar a execução de snaps.
No caso acima, um servidor foi consertado e outro precisou se inscrever novamente.
Apenas para complementar ou adicionar à outra resposta
há momentos em que você recebe uma mensagem realmente cabeluda
a primeira coisa que faço é ativar o detalhado:
e:
Dê uma olhada na parte mais recente do comando abaixo, você verá o parâmetro de saída.
Agora podemos dar uma olhada no arquivo de log.
Agora você pode dar uma olhada no log gerado e prosseguir a partir daí. Exemplo (veja a próxima foto abaixo):
O comando no trabalho é:
Não posso dar uma resposta direta para o seu caso em particular, mas com certeza posso ajudá-lo a descobrir qual é o problema, usando as etapas acima.
Se parece confuso, deixe um comentário abaixo, tentarei ser mais específico.