Como requisito para obter novos dados do editor para o assinante. Usei gerar um novo instantâneo, executar o leitor de log e executar o agente de distribuição.
Gostaria de saber qual opção usamos para inicializar o Assinante para todos os artigos. Posso ver as seguintes 4 opções.
A replicação está funcionando bem, mas ouvi da equipe de aplicativos que eles estão enfrentando algum problema ao comparar dados e carregar o trabalho ETL.
Usei drop and recreate e apareceu erro de relacionamento de chave primária e chave estrangeira. Então usei Truncar toda a tabela e carregar.
Esse é o método correto.
Não existe um único método correto, depende apenas dos seus casos de uso.
A opção padrão
Drop existing object and create a new one
é comumente usada pelas pessoas. Mas eles normalmente também não precisam replicar as chaves primárias e estrangeiras de suas tabelas, já que você não gravará nenhum dado nessas tabelas no lado do Assinante. Portanto, você não precisa desse tipo de verificação de consistência de dados no lado do Assinante, pois isso já está sendo tratado na origem no lado do Publicador.Os motivos pelos quais você pode não querer usar essa opção são se você fizer alguma alteração de esquema nas tabelas replicadas no Assinante, como índices personalizados, gatilhos, recursos de rastreamento de alterações (como Tabelas Temporais ou CDC), etc. para escrever código adicional para gerenciar automaticamente a remoção/colocação dessas coisas no lugar, sempre que ocorrer a reinicialização. Nesse caso, essa
Truncate all data in the existing object
pode ser a melhor escolha para seus casos de uso.Mas também há desvantagens nessa opção. Certas alterações de esquema no Publicador interromperão sua topologia de replicação se a opção estiver definida como Truncar somente. Por exemplo, se uma nova coluna for adicionada ao meio de uma tabela no Publicador, isso exigiria que a tabela no Assinante fosse eliminada e recriada. Com a opção Truncar somente selecionada, sua topologia de replicação apresentará erros e interromperá a sincronização de dados. (Este cenário específico pressupõe que você não esteja usando filtros de coluna no Artigo que está sendo replicado.)
Minha recomendação é manter o padrão de
Drop existing object and create a new one
quando possível (e não replicar chaves primárias ou chaves estrangeiras) e apenas alterá-loTruncate all data in the existing object
se você tiver um caso de exceção para esse artigo, que não possa ser tratado de outra forma.