Tenho um banco de dados de produção, ou seja, onde há atualizações constantes e configurei isso para ser publicado em outro servidor usando Replicação Transacional.
Quando configuro a replicação transacional, faço o seguinte:
- desativar o acesso ao banco de dados de origem
- banco de dados de origem de backup e depois restaurar para o servidor de assinatura
- configurar replicação
- reativar o acesso ao banco de dados para nossos aplicativos
O problema com esta abordagem é o agendamento em tempo de inatividade, tendo que suspender todas as diversas tarefas agendadas cronometradas que executamos e encerrar o acesso às nossas diversas aplicações que dependem deste banco de dados.
Posso simplesmente configurar a replicação transacional sem desabilitar o acesso ao banco de dados de publicação e o banco de dados de assinantes será atualizado corretamente? ou seja, todas as instruções DML estão enfileiradas no editor e, assim que o assinante estiver pronto, elas serão retiradas e executadas?
Responder1
A resposta simples é Não... Você não precisa desabilitar o acesso ao sistema, etc. Aqui está por que e como funciona... Quando você configura a replicação, o editor cria um instantâneo dos dados no exato momento em que você cria o publicação. Há também um leitor de log em execução ao mesmo tempo com a replicação transacional que captura TODAS as transações desde a criação do último instantâneo. Então... quando um assinante é criado, é basicamente um processo de 2 etapas:
Etapa 1: O instantâneo é aplicado ao Assinante, que cria o esquema e os dados no banco de dados do Assinante.
Passo 2: Em seguida, as Transações desde o momento do Instantâneo são aplicadas para que o Assinante mantenha o banco de dados do Assinante atualizado com os dados mais recentes.
Então, basicamente, não, você não precisa fazer todas as outras coisas que está fazendo para criar um novo assinante.
Deixe-me saber se você precisar de mais alguma coisa.
Obrigado!
-VM