Dados, não código
O dbSlice move dados: tabelas, linhas, chaves e tipos. Ele não converte procedures nem triggers em PSQL para T-SQL; planeje essa parte à parte. A maioria dos sistemas em Firebird guarda regras de negócio em triggers e procedures, e nenhuma ferramenta converte tudo isso automaticamente.

O que o dbSlice faz
- Conecta no Firebird com o caminho ou o alias do banco, como a sua aplicação faz.
- Lê em lotes pequenos, para o banco de produção continuar atendendo os usuários.
- Mostra o DDL do destino. Se a tabela não existe no SQL Server, o dbSlice para antes de gravar e mostra um
CREATE TABLEtraduzido do Firebird para o seu DBA revisar e rodar. Ele não cria objetos nos seus bancos por conta própria. - Mascara no caminho quando a cópia é para desenvolvimento ou teste.
Como os tipos de coluna são sugeridos
| Firebird | Sugerido no SQL Server | Revise antes de rodar |
|---|---|---|
SMALLINT, INTEGER, BIGINT | SMALLINT, INT, BIGINT | — |
NUMERIC(p,s), DECIMAL(p,s) | DECIMAL(p,s) | — |
FLOAT, DOUBLE PRECISION | FLOAT | — |
DATE, TIME | DATE, TIME | — |
TIMESTAMP | DATETIME2 | — |
CHAR(n), VARCHAR(n) | NVARCHAR(n), ou NVARCHAR(MAX) acima de 4.000 | O preenchimento do CHAR não é mantido |
BOOLEAN | BIT | — |
BLOB SUB_TYPE 1 (texto) | NVARCHAR(MAX) | — |
BLOB (binário) | VARBINARY(MAX) | — |
Firebird 4 e 5: INT128 | DECIMAL(38,0) | — |
Firebird 4 e 5: DECFLOAT | DECIMAL(38,10) | Confira os valores reais e ajuste a escala |
Firebird 4 e 5: TIME/TIMESTAMP WITH TIME ZONE | TIME/DATETIME2 | O fuso não é copiado: normalize para UTC num SELECT se ele importa |
É um ponto de partida, não um esquema final: chaves, índices e constraints ficam por sua conta.
Migrar de Firebird para SQL Server: três detalhes para planejar
1. Nomes em maiúsculas. O Firebird guarda os nomes em maiúsculas (CUSTOMERS, CUST_NAME). O SQL Server, por padrão, não diferencia maiúsculas; então você pode mantê-los ou renomeá-los no CREATE TABLE; o dbSlice casa as colunas pelo nome sem diferenciar maiúsculas.
2. Conjunto de caracteres. O dbSlice conecta em UTF-8. Bancos antigos criados com charset NONE ou WIN1252 podem parar com o erro "cannot transliterate" em caracteres acentuados. Informe o charset real do banco na string de conexão e rode de novo.
3. Ids vindos de generators. O Firebird preenche os ids a partir de generators (sequences). Se a coluna no SQL Server é IDENTITY, manter os ids originais exige IDENTITY_INSERT, que exige permissão de ALTER na tabela. Nas abas Synchronize e Replicator, essa é a opção "Keep source IDENTITY (SQL Server, needs ALTER)": vem desligada e pede confirmação antes de gravar. Com ela desligada, o dbSlice avisa e para antes de gravar numa coluna IDENTITY. O outro caminho: declare a coluna como INT ou BIGINT comum, copie e acrescente o IDENTITY ou uma SEQUENCE depois.
Como o dbSlice grava no SQL Server
- Lê o Firebird em lotes pequenos, ordenados pela chave, para o banco de produção continuar atendendo os usuários.
- O Upsert roda como
MERGEna coluna-chave que você escolhe. O Insert new acrescenta só as linhas que ainda não estão no SQL Server. - As cargas em massa usam
SqlBulkCopycom triggers disparados e constraints verificados, para as regras que você já tem no SQL Server continuarem valendo. NUMERICeDECIMALmantêm precisão e escala. O Firebird para em 18 dígitos (38 no Firebird 4), o que cabe noDECIMALdo SQL Server.- Confere antes de gravar com o Record Diff e as conferências na tela, e prova o resultado com o Compare e a lista completa de chaves divergentes.
- Exportar em vez de carregar: quando você só precisa de um arquivo, o mesmo app exporta uma tabela do Firebird para CSV, JSON, XML ou HTML.
Erros comuns e o que significam
cannot transliterate character between character sets— charsetNONEouWIN1252no banco Firebird. Informe o charset real na string de conexão.String or binary data would be truncated— uma coluna de destino é menor que os dados, muitas vezes declarada à mão. Aumente o tamanho.Arithmetic overflow error converting numeric to data type numeric— um valorNUMERICnão cabe na precisão escolhida. Aumente oDECIMAL.
Passo a passo: converter uma tabela de Firebird para SQL Server
- Conecte no Firebird (host, porta, caminho ou alias do banco, usuário) e no SQL Server.
- Escolha a tabela de origem ou escreva um SELECT, e a tabela de destino.
- Escolha a coluna-chave usada para casar as linhas.
- Escolha o modo: Initial load na primeira vez, depois Upsert ou Insert new.
- Confira antes de gravar: o Record Diff compara as chaves dos dois lados.
- Rode, ou salve como job e agende pela CLI. O Replicador copia uma lista de tabelas numa execução, as pais antes das filhas.
Mantenha os dois sincronizados até a virada
A aplicação em Firebird costuma continuar em produção enquanto a nova é testada. Agende um job Upsert toda noite; com uma coluna que só cresce (um timestamp ou um id alimentado por generator), cada execução lê só as linhas acima do último valor visto. Exclusões no Firebird não são detectadas pelas execuções incrementais; por isso, planeje uma comparação completa ou uma recarga antes da troca.
Perguntas frequentes
O dbSlice converte procedures e triggers em PSQL para T-SQL?
Não. Ele move dados; reescreva o código à parte.
Quais versões do Firebird?
Firebird 3, 4 e 5 são testados no nosso laboratório; o 2.5 usa o mesmo driver, mas não está na nossa matriz de testes. Os tipos que só existem no Firebird 4 e 5 (DECFLOAT, INT128, TIME/TIMESTAMP WITH TIME ZONE) entram no DDL sugerido como na tabela acima; o fuso não é copiado.
Ele cria as tabelas no SQL Server?
Não por padrão. Ele para antes de gravar e mostra um CREATE TABLE para o seu DBA revisar e rodar.
Posso testar antes de comprar?
Sim. A versão gratuita da Microsoft Store não precisa de chave de licença; gravar num banco de destino exige uma licença Desktop ou Server.
Preciso de replicação ou ferramentas extras no servidor Firebird?
Não. O dbSlice lê as tabelas com consultas comuns pelo driver padrão do Firebird.
As execuções incrementais copiam as exclusões?
Não. Rode o Compare ou uma recarga antes da troca.
Mover dados entre Firebird e SQL Server
O mesmo app move dados no outro sentido, do SQL Server de volta para o Firebird, com os mesmos passos. Para PostgreSQL, veja Firebird para PostgreSQL. O Firebird também vai para MySQL, MariaDB, Oracle, SQLite ou InterSystems IRIS. Sistema InterSystems legado? Veja Caché e IRIS para SQL Server. Vindo do SQLite? Veja SQLite para SQL Server.
Outros guias de migração: MySQL e MariaDB para PostgreSQL · Oracle para PostgreSQL · InterSystems Caché/IRIS para PostgreSQL · Caché e IRIS para SQL Server.