O truque estará em como você sincroniza. No procedimento armazenado sp_addarticle, o padrão para o parâmetro @pre_creation_cmd é eliminar a tabela no assinante. Isso vai ser um problema para você. Veja como eu poderia fazer isso:
- Faça o que for necessário para mover o banco de dados publicado para o novo servidor. Isso provavelmente incluirá a quebra da replicação (deliberadamente).
- No assinante, renomeie todas as suas tabelas (ou coloque-as em outro esquema). Isso irá protegê-los de qualquer problema que possa acontecer com eles como parte da reinicialização da replicação. Como alternativa, você pode renomear o banco de dados com a intenção de criar um novo banco de dados para servir como o assinante.
- Reconstrua a publicação e a assinatura
- Deixe a publicação sincronizar
- Para cada tabela em que você tem essa condição de arquivamento, insira os dados de onde quer que você tenha movido as tabelas na etapa 2 que não existam nas tabelas "ao vivo" no assinante. Essencialmente, uma junção esquerda entre a mesa salva e a mesa viva em cada caso
Também sugiro que você aproveite esta oportunidade para implementar um local mais seguro para seus dados de arquivamento. Se alguma vez a replicação quebrar por conta própria (pode e faz), você está em um ponto complicado no que diz respeito à reinicialização. Se eu tivesse que fazer isso, criaria um procedimento personalizado chamado por replicação (você pode especificá-lo com o parâmetro @del_cmd para sp_addarticle) que insere o registro em sua tabela de arquivamento e, em seguida, faz a exclusão da sua tabela ativa. Mas existem inúmeras maneiras de realizar a mesma coisa. Boa sorte.