Eu tenho uma replicação de transação e a assinatura foi sincronizada do instantâneo anos atrás. Agora eu tenho uma nova tabela que precisa ser adicionada à replicação. O problema é que a tabela está perto de um TB e eu não quero gerar um instantâneo para essa tabela, apenas quero que os novos dados sejam sincronizados, como quando você sincroniza do backup. Suas inserções apenas na tabela e posso sincronizar os dados antigos manualmente mais tarde.
Como faço a replicação para iniciar a transferência dos dados sem gerar o snapshot.
Realmente não há uma maneira suportada de fazer o que você está pedindo. Você pode usar um backup/restauração, mas isso seria para um novo banco de dados. Você pode tentar um artigo filtrado onde você só pega dados após uma determinada data de criação.
Ou você pode usar um processo manual, como um pacote SSIS ou scripts T-SQL para preparar o esquema e os dados. Mas o instantâneo é mais ou menos um item necessário.
Eu provavelmente faria um instantâneo de um único artigo ou talvez procurasse filtrar se você pudesse filtrar create_date > getdate() e adicionar linhas manualmente depois se você tivesse essa coluna ou uma coluna de identidade, etc.
Alguns links:
Sobre a preparação manual.
Sobre o uso de backups ou outros métodos.
Sobre filtragem.
O que você deseja procurar é 'inicializando um assinante manualmente'. Para fazer isso, você pode configurar seu assinante para usar uma opção de
@sync_type = 'replication support only'
e isso permite que o sistema saiba que você já preparou manualmente o ambiente.Aqui está a documentação da Microsoft sobre como inicializar um assinante manualmente.
Tenha cuidado com os conflitos de ID, obviamente, pois você está ignorando tudo o que o sistema verifica e informando que tem certeza de que tudo já está sincronizado e para começar a replicar.
Nesse caso, você nem precisa executar o agente de instantâneo para essa publicação se já estiver pronto. Este artigo dá-lhe mais um pano de fundo.
Edite a pergunta e responda abaixo em perguntas:
Parece que você vai querer seguir o plano discutido nos comentários onde você configura uma nova publicação. Se você tiver controle total de ambos os lados e puder interromper todas as transações, talvez queira apenas refazer a assinatura e a publicação para incluir tudo e fazer um @sync_type = 'somente suporte à replicação'. Ou faça uma 2ª publicação com essa tabela como seu artigo e envie-a com suporte de replicação apenas como 2 opções que você tem.
Siga as etapas neste artigo do MSDN . Citar:
Esta é uma solução antiga e boa http://www.sqlservercentral.com/articles/Replication/119650/ . Funciona como mágica para mim toda vez que eu o uso.
exec sp_changepublication @publication=N'testWOM' , @property=N'allow_anonymous' , @value='false'; vá exec sp_changepublication @publication=N'testWOM' , @property=N'immediate_sync' , @value='false'; vai