Migrar de SQL Server para MariaDB: o que muda no destino
Se a tabela não existe no MariaDB, o dbSlice para e mostra um CREATE TABLE traduzido para o MariaDB, para o seu DBA revisar e rodar. Por padrão, ele não cria nada nos seus bancos. Estes são os detalhes do MariaDB para olhar:
bitviraTINYINT(1). O MariaDB não tem um tipo booleano separado;BOOLEANé apelido deTINYINT(1), então as flags chegam como 1 e 0.- As datas perdem o 7º dígito. O
datetime2do SQL Server guarda precisão de 100 nanossegundos; oDATETIME(6)do MariaDB guarda microssegundos. Odatetimeoffsettambém é sugerido comoDATETIME(6), sem o offset: guarde em UTC, ou acrescente uma coluna para o fuso se a aplicação precisar. uniqueidentifierviraCHAR(36), o GUID como texto. No MariaDB 10.7 ou posterior, você pode declarar o tipo nativoUUIDnoCREATE TABLE.nvarcharviraVARCHARouLONGTEXT. Use o charsetutf8mb4para caber qualquer caractere Unicode. O MariaDB limita uma linha a 65.535 bytes; então uma tabela com muitas colunasVARCHARlargas pode precisar de algumas delas comoTEXT.rowversionviraLONGBLOB. É um contador de mudanças do SQL Server, não uma data: deixe fora da cópia, a menos que a aplicação o leia.- Os ids
IDENTITYsão mantidos como valoresAUTO_INCREMENT. O MariaDB aceita os ids originais e avança o contador para depois do maior, então as linhas novas continuam dali. - O Upsert precisa de uma chave no MariaDB. Ele roda como
INSERT … ON DUPLICATE KEY UPDATE; então a coluna-chave precisa ser a chave primária ou ter um índice único na tabela do MariaDB. - A carga em massa usa
LOAD DATA LOCAL INFILEquando a conexão permite (AllowLoadLocalInfile=trueelocal_infileno servidor). O dbSlice não liga isso por conta própria; sem isso, as linhas entram em INSERTs em lote.

Como o dbSlice controla a carga
- Lê o SQL Server em lotes pequenos, para o banco em uso continuar atendendo os usuários.
- Casa as linhas por uma chave que você escolhe. Modos: Initial load na primeira vez, depois Upsert, Insert new, Update only ou incremental por coluna (
updated_atou o idIDENTITY), que lê só as linhas acima do último valor visto. - Confere antes de gravar: o Record Diff compara as chaves dos dois lados, e as conferências na tela rodam antes de qualquer gravação.
- Prova o resultado: o Compare lê as duas tabelas chave a chave e salva a lista completa de chaves divergentes num arquivo.
- Mascara no caminho se a cópia no MariaDB for para desenvolvimento ou teste: as colunas sensíveis são ofuscadas durante a cópia, com chaves e chaves estrangeiras preservadas.
- Exportar em vez de carregar: quando você só precisa de um arquivo, o mesmo app exporta uma tabela do SQL Server para CSV, JSON, XML ou HTML.
Passo a passo: converter uma tabela de SQL Server para MariaDB
- Conecte no SQL Server e no MariaDB.
- Escolha a tabela de origem (ou um SELECT) e a tabela de destino.
- Escolha a coluna-chave.
- Escolha o modo: Initial load, depois Upsert ou Insert new.
- Rode o Record Diff e depois a cópia, ou salve como job para a CLI e o Agendador de Tarefas do Windows. O Replicador copia uma lista de tabelas numa execução, as pais antes das filhas.
Mover dados entre SQL Server e MariaDB, com qualquer um dos dois como origem
O mesmo app move dados no outro sentido: veja MariaDB para SQL Server. Ele também cobre SQL Server para PostgreSQL e MySQL, Oracle, Firebird, SQLite e InterSystems IRIS. Vindo do PostgreSQL? Veja PostgreSQL para MySQL e MariaDB.
Perguntas frequentes
O dbSlice converte stored procedures, triggers ou views?
Não. Ele move dados; o código T-SQL precisa ser reescrito para o MariaDB.
Preciso de CDC ou do SQL Server Agent?
Não. O dbSlice lê as tabelas com consultas comuns e roda como job pela própria CLI ou pelo Agendador de Tarefas.
As execuções incrementais copiam as exclusões?
Não. As execuções incrementais leem as linhas novas e alteradas. Rode o Compare ou uma recarga antes da troca para pegar as linhas excluídas.
Existe versão gratuita?
Sim, na Microsoft Store: ela conecta, navega, compara e exporta para CSV. Gravar num destino exige uma licença Desktop ou Server.