---
title: "Migrar SQL Server para SQLite no navegador"
description: "Migre um banco SQL Server para SQLite: converta o script que o SSMS gera em um com as mesmas tabelas, chaves e dados, e um relatório de cada mudança."
canonical: https://intosql.com/pt-br/sql-server-para-sqlite
last_updated: 2026-10-15
---

# Migrar SQL Server para SQLite no navegador

Solte o script que o Generate Scripts do SSMS escreve com schema e dados, em .sql ou .sql.gz, UTF-16 ou UTF-8, e baixe um script do SQLite com as mesmas tabelas, chaves, índices e dados. Cada valor que o SQLite não aceita como está, e cada objeto que ele não traz, aparece no relatório.

[Guia de migração de SQL Server para SQLite](https://intosql.com/docs/migrations/sql-server-to-sqlite)

[Tipos de dados de SQL Server para SQLite](https://intosql.com/docs/types/sql-server-to-sqlite)

## O que muda do SQL Server para o SQLite

Cada linha é uma regra que o conversor aplica, com a linha do relatório que ele escreve quando a regra muda algo nos seus dados.

| No SQL Server | No SQLite | Linha do relatório |
| --- | --- | --- |
| bit | INTEGER 0 ou 1 com um CHECK |  |
| tinyint | INTEGER com um CHECK de que não é negativo | `unsigned_widened` |
| char(n), varchar(n), nchar(n), nvarchar(n), varchar(max), text | VARCHAR(n) e TEXT, sem limite aplicado |  |
| decimal(p,s) past 15 digits, money | TEXT | `decimal_as_text` |
| date, datetime, datetime2, smalldatetime | DATETIME como texto ISO 8601, com todos os dígitos |  |
| datetimeoffset | TIMESTAMP como texto ISO 8601 em UTC | `moments_as_utc` |
| time | TIME como texto |  |
| dates that aren't valid | NULL | `date_out_of_range` |
| json (SQL Server 2025) | TEXT |  |
| uniqueidentifier | TEXT |  |
| binary, varbinary, image | BLOB |  |
| geometry, geography | BLOB com os bytes próprios do SQL Server | `spatial_as_native` |
| rowversion, timestamp | BLOB, sem valores | `rowversion_empty` |
| xml, sql_variant, hierarchyid, vector | TEXT | `type_replaced` |
| collations that ignore case (_CI_) | comparação exata | `case_insensitive_collation` |
| IDENTITY | INTEGER PRIMARY KEY AUTOINCREMENT, continuando depois do maior id |  |
| IDENTITY columns that aren't the whole primary key | INTEGER sem contador | `counter_dropped` |
| CREATE SEQUENCE | não criado | `sequence_not_converted` |
| computed columns | GENERATED ALWAYS AS, STORED quando PERSISTED, VIRTUAL nos outros casos |  |
| computed columns with functions SQLite lacks | uma coluna simples | `generated_not_translated` |
| defaults with functions SQLite lacks, and NEXT VALUE FOR | sem valor padrão | `default_not_translated` |
| CHECK constraints | traduzidos |  |
| CHECK constraints with functions SQLite lacks | não criado | `check_skipped` |
| CHECK constraints added WITH NOCHECK or disabled | não criado | `check_not_enforced` |
| filtered and columnstore indexes | não criado | `index_skipped` |
| foreign keys | no CREATE TABLE, carregadas sem verificação, depois listadas por PRAGMA foreign_key_check |  |
| foreign keys to tables the dump doesn't create | não criado | `foreign_key_skipped` |
| tables on a partition scheme | uma tabela com as linhas de todas as partições | `partitions_dropped` |
| temporal tables (SYSTEM_VERSIONING) | duas tabelas: as linhas atuais e o histórico | `system_versioning_dropped` |
| schemas | um arquivo, tabelas com o nome do schema na frente | `schemas_merged` |
| NOT NULL columns with values that become NULL | NOT NULL removido | `not_null_relaxed` |
| views, functions, procedures, triggers, synonyms, types and partition functions | listados no relatório | `not_converted_objects` |
| scripts without CREATE TABLE (data only) | tipos deduzidos dos valores | `no_schema` |
| expressions in INSERT values | NULL | `expression_value` |
| types IntoSQL doesn't know | TEXT | `unknown_type` |
| NUL characters in text | mantido |  |
| text that isn't valid in its encoding | os bytes inválidos como o caractere de substituição | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | copiado como está | `mojibake_suspected` |

## Carregue o script no SQLite

O script cria as tabelas, copia as linhas e depois adiciona chaves, índices e chaves estrangeiras, então carrega rápido e para no primeiro erro.

```shell
sqlite3 -bail mydb.sqlite < sql_server.sqlite.sql
```

As chaves estrangeiras são declaradas em cada tabela e as linhas carregam com a verificação de chaves estrangeiras desligada. Depois o script lista cada linha que aponta para uma linha que não existe, em vez de falhar no meio do caminho.

Para um dump grande, carregue em um arquivo novo em um disco local. O script carrega tudo em uma transação com a sincronização desligada, então roda na velocidade do disco, e uma carga interrompida no meio não deixa tabelas incompletas.

A linha de comando carrega o arquivo direto em um banco SQLite, sem escrever um script. É grátis.

## Gere o dump do SQL Server para o melhor resultado

O conversor lê o que o dump contém. Estas opções mantêm mais dos seus dados nele:

- No SSMS, clique com o botão direito no banco de dados, Tasks, Generate Scripts, e escolha as tabelas. dbatools, mssql-scripter e outras ferramentas feitas sobre a mesma biblioteca escrevem o mesmo script.
- Em Advanced, defina Types of data to script como Schema and data. Um script só do schema tem tabelas sem linhas.
- Salve como Unicode, o padrão do SSMS, ou como UTF-8: os dois são lidos do mesmo jeito, e gzip também funciona.

## O que não é convertido

Visões, funções, procedimentos, gatilhos, sinônimos, regras e políticas de segurança são escritos em T-SQL. Eles aparecem no relatório pelo nome, nunca são descartados em silêncio, para que você possa reescrevê-los para o SQLite.

## Perguntas sobre SQL Server para SQLite

### Meu dump é enviado?

Não. O conversor roda no seu navegador e lê o dump do seu disco em partes, então ele nunca sai do seu computador. O app para desktop e a linha de comando também convertem no seu computador.

### Qual o tamanho máximo do dump?

O conversor nunca guarda o dump inteiro na memória: ele lê o arquivo duas vezes, por intervalos, e escreve o script à medida que avança. Dumps de vários gigabytes são convertidos no navegador, no app para desktop e com a linha de comando.

### Ele lê o arquivo UTF-16 que o SSMS salva?

Sim. O SSMS salva scripts em UTF-16 por padrão, e o conversor lê UTF-16 e UTF-8 do mesmo jeito, com ou sem gzip, com GO entre os lotes.

### De quais versões do SQL Server o script pode vir?

Scripts que o SSMS, o dbatools ou o mssql-scripter escrevem a partir do SQL Server 2017. Cada script de teste vem do SQL Server 2017, 2022 e 2025 e é comparado com a origem célula por célula.

### Os valores IDENTITY são mantidos?

Uma coluna IDENTITY que é toda a chave primária da tabela vira INTEGER PRIMARY KEY AUTOINCREMENT, cada linha mantém seu id, e o próximo id continua depois do maior. Qualquer outra mantém seus valores sem contador.

### O que acontece com money, datetimeoffset e outros tipos do SQL Server?

bit vira 0 e 1, datetime2 texto ISO 8601 com todos os dígitos, datetimeoffset texto em UTC, e decimais largos e money texto exato. Colunas computadas continuam computadas. Os schemas viram prefixos do nome da tabela.

### E os procedimentos, gatilhos e visões?

Eles aparecem no relatório pelo nome e não são convertidos, porque cada banco de dados os escreve na sua própria linguagem.

### Em quais versões do SQLite o script carrega?

SQLite 3.31 e posteriores. Cada script de teste carrega no 3.31 e no 3.54 e para no primeiro erro se algo der errado.

## De SQL Server

- [SQL Server para PostgreSQL](https://intosql.com/pt-br/sql-server-para-postgresql)
- [SQL Server para MySQL](https://intosql.com/pt-br/sql-server-para-mysql)
- [SQL Server para MariaDB](https://intosql.com/pt-br/sql-server-para-mariadb)
- [SQL Server para SQL Server](https://intosql.com/pt-br/sql-server-para-sql-server)
- [SQL Server para Oracle](https://intosql.com/pt-br/sql-server-para-oracle)

## Para SQLite

- [MySQL para SQLite](https://intosql.com/pt-br/mysql-para-sqlite)
- [MariaDB para SQLite](https://intosql.com/pt-br/mariadb-para-sqlite)
- [PostgreSQL para SQLite](https://intosql.com/pt-br/postgresql-para-sqlite)
- [SQLite para SQLite](https://intosql.com/pt-br/sqlite-para-sqlite)
- [Oracle para SQLite](https://intosql.com/pt-br/oracle-para-sqlite)

## Guia e todos os pares

- [SQLite para SQL Server](https://intosql.com/pt-br/sqlite-para-sql-server)
- [Guia de migração de SQL Server para SQLite](https://intosql.com/docs/migrations/sql-server-to-sqlite)
- [Tipos de dados de SQL Server para SQLite](https://intosql.com/docs/types/sql-server-to-sqlite)
- [Todos os pares de bancos de dados](https://intosql.com/pt-br/migracao-de-banco-de-dados)
