Eu tive várias vezes um problema semelhante. O truque para isso é configurar 2 Assinaturas
- Aquele que você configurou no momento
- Outro para um banco de dados do SQL Server, que sincronizará "normalmente"
Então aqui está todo o procedimento:
- Configure um assinante do servidor sql, sincronize-o como quiser, o importante é ter certeza de que esse assinante está corretamente sincronizado
- Configure sua replicação para o postgres. Tome cuidado para ter todas as tabelas de destino criadas no postgres, mas não se importe com a sincronização de dados.
- Nesse estágio, quando você modifica dados no primário, ele é copiado em ambos os escravos. Agora você interrompe o agente LOG READER no Distribuidor. E você espera (graças ao monitor de replicação, por exemplo) que ambos os agentes de assinatura processaram todas as transações para ambos os assinantes.
- Truncar todas as tabelas replicadas no assinante POSTGRES
- Copie todas as tabelas do Assinante SQL ( NÃO o servidor principal !!) para o Assinante do Postgres.
- Os dois assinantes têm exatamente os mesmos dados!
- Inicie o agente do Leitor de Log. Você está feito
Por favor, note que enquanto o Log Reader Agent estiver parado, as transações no Publicador ficarão presas no LOG do Publicador. Portanto, tome cuidado para não deixá-lo ir cheio. O passo 5 (copiar os dados) pode ser bem longo, então configure um log suficientemente grande no primário (dependendo do volume da transação).
A propósito, se você colocar o sync_type em 'automatic', o agente snapshost irá gerar um snapshot que também será sincronizado corretamente. Onde está minha recompensa?