Quando esta é a ferramenta certa
- Uma réplica de leitura ou de relatórios em PostgreSQL que precisa acompanhar um sistema de registro em SQL Server.
- Uma migração com virada longa: o SQL Server antigo continua no ar por semanas e o PostgreSQL precisa se atualizar toda noite até a troca.
- Alimentar um banco analítico em PostgreSQL a partir de uma ou mais tabelas do SQL Server, num agendamento.
Comparando ferramentas? Veja as melhores ferramentas para migrar SQL Server para PostgreSQL →

Como uma sincronia funciona
- Escolha a tabela de origem ou um SELECT no SQL Server e a tabela de destino no PostgreSQL.
- Escolha a coluna-chave usada para casar as linhas. O dbSlice lê a origem em lotes pequenos, para um banco em uso continuar atendendo os usuários enquanto a sincronia roda.
- Escolha o que a execução faz no destino:
Modo O que faz Upsert Insere as chaves novas e atualiza as que mudaram Insert new Insere só as chaves que faltam; as linhas existentes não são tocadas Initial load Inserts simples numa tabela vazia Update only Atualiza as linhas que já existem Full reload Esvazia a tabela de destino e carrega de novo - Opcional: mapeie colunas com nomes diferentes, acrescente um filtro WHERE, mascare valores sensíveis durante a cópia.
- Confira antes de gravar. O Record Diff compara as chaves dos dois lados (quantas são, quais faltam).
- Rode, ou salve como job e rode pela CLI ou pelo Agendador de Tarefas do Windows.
Execuções incrementais
Aponte o job para uma coluna que só cresce, como updated_at. Para um rowversion do SQL Server, use um SELECT de origem que o devolva como CAST(rv AS BIGINT) e aponte o job para essa coluna. Cada execução lembra o maior valor lido, e a seguinte só lê as linhas acima dele. Junto com o Upsert, uma atualização noturna lê o que mudou em vez da tabela inteira.
Exclusões no SQL Server não são detectadas por uma execução incremental. Se linhas são excluídas na origem, agende uma comparação completa periódica ou uma recarga completa.
O seu banco continua seu
Por padrão, o dbSlice só lê e grava linhas. Ele não cria tabelas, triggers nem objetos temporários nos seus bancos (o modo de gravação mais rápido, abaixo, é opcional). Se a tabela ainda não existe no PostgreSQL, o dbSlice para antes de gravar e mostra o script CREATE TABLE, traduzido do esquema do SQL Server, para o seu DBA revisar e rodar.
Velocidade, com as condições
As cargas iniciais e as recargas completas usam a carga em massa do PostgreSQL. Para o Upsert e o Insert new existe um modo de gravação mais rápido, que precisa de uma tabela temporária na sessão; ele vem desligado e você só o liga se o seu DBA permitir tabelas temporárias. No nosso teste de laboratório com esse modo ligado (SQL Server 2022 e PostgreSQL 17 no mesmo host, rede local de contêineres, sem outra carga, uma execução por caso), o dbSlice 2.3 sincronizou:
- 10.000 linhas no modo Upsert em 0,4 s (~28.000 linhas/s);
- 1.000.000 de linhas no modo Insert new em 10,6 s (~94.000 linhas/s).
Os seus números vão variar com a latência de rede entre os servidores, o disco, os índices, a largura das linhas e qualquer mascaramento ou transformação. Rode o teste de referência embutido nos seus servidores antes de planejar uma janela de virada.
O que o dbSlice não faz
- Ele move dados, não código. Stored procedures, triggers, funções e T-SQL não são convertidos para PL/pgSQL. Use um conversor de código para essa parte e o dbSlice para os dados.
- Não é replicação em tempo real. As execuções são jobs em lote (sob demanda ou agendados). Se você precisa de captura de mudanças em menos de um segundo, procure ferramentas de CDC por log.
Também serve para
A mesma tela sincroniza qualquer par entre SQL Server, PostgreSQL, Oracle, MySQL, MariaDB, Firebird, SQLite e InterSystems Caché/IRIS, e PostgreSQL para SQL Server no outro sentido. Para uma migração única, leia o guia de migração de SQL Server para PostgreSQL. Para SQL Server para MySQL ou MariaDB, veja a página dedicada.
Planejando a migração em si? →
Sincronizando a partir de um sistema em uso? →
Comparando ferramentas? dbSlice ou pgloader · alternativa ao DBConvert.