Tenho uma replicação transacional entre dois servidores SQL Server 2008 SP1, ambos no Windows 2003 Server. Descobri que existem discrepâncias entre algumas das tabelas do banco de dados principal e o banco de dados de assinatura. Fiz uma validação manual nas contagens de registros e há pequenas diferenças. Eu sei que há uma latência entre os dois lados, então não é para se preocupar muito, mas há uma tabela específica que não irá sincronizar, não importa o quê (novas linhas aparecem, mas algumas linhas antigas específicas não aparecem, então elas parecem foram removidos após a sincronização).
A situação é que o banco de dados de assinatura não é somente leitura, portanto, um aplicativo pode ler e também gravar dados nesse banco de dados.
Agora eu gostaria de saber quais soluções você usaria para sincronizar os dois lados. Eu posso pensar em dois agora:
use o utilitário tablediff.exe para cada artigo para comparar tabelas de origem e destino e gerar scripts
reinicialize a assinatura para que ela invalide o último instantâneo e gere um novo.
Existem outras soluções para corrigir isso?
Vou responder isso em 2 partes.
Primeiro, se você deseja sincronizar os dados novamente, reinicie. Verifique o que está alterando os dados. Se for uma tabela grande, a reinicialização pode demorar um pouco.
Em segundo lugar, se o assinante não for somente leitura e você estiver tentando fazer a replicação transacional, você encontrará muito esse erro. Pessoas, aplicativos, o que quer que possa mudar algumas linhas e bum, os e-mails começam a chegar. Se você precisar que ambos os lados possam fazer CRUD de dados, eu usaria a replicação de mesclagem . Isso permite que ambos os lados atualizem os dados.