---
title: "Migrar SQL Server para MySQL no navegador"
description: "Migre um banco SQL Server para MySQL: 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-mysql
last_updated: 2026-10-15
---

# Migrar SQL Server para MySQL 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 MySQL com as mesmas tabelas, chaves, índices e dados. Cada valor que o MySQL 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 MySQL](https://intosql.com/docs/migrations/sql-server-to-mysql)

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

## O que muda do SQL Server para o MySQL

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 MySQL | Linha do relatório |
| --- | --- | --- |
| bit | tinyint(1) |  |
| char(n), varchar(n), nchar(n), nvarchar(n), varchar(max), text | char(n), varchar(n) até 1024 caracteres, tipos text acima disso |  |
| decimal(p,s), money, smallmoney | decimal(p,s); money como decimal(19,4) |  |
| datetime, datetime2, smalldatetime | datetime(p) |  |
| datetime2(7), time(7) and datetimeoffset(7) | seis dígitos de segundo, o sétimo cortado | `fraction_cut` |
| datetimeoffset | datetime(p) em UTC | `moments_as_utc` |
| time | time(p) |  |
| dates before the year 1000 | NULL | `date_out_of_range` |
| json (SQL Server 2025) | json |  |
| uniqueidentifier | char(36) |  |
| binary, varbinary, image | binary(n), varbinary(n) e tipos 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 | longtext | `type_replaced` |
| collations that ignore case (_CI_) | comparação exata (utf8mb4_bin) | `case_insensitive_collation` |
| IDENTITY | AUTO_INCREMENT, continuando depois do maior id |  |
| IDENTITY columns that don't lead the primary key | um inteiro simples | `counter_dropped` |
| CREATE SEQUENCE | não criado | `sequence_not_converted` |
| computed columns | colunas geradas, STORED quando PERSISTED, VIRTUAL nos outros casos |  |
| computed columns with functions MySQL lacks | uma coluna simples | `generated_not_translated` |
| defaults with functions MySQL lacks, and NEXT VALUE FOR | sem valor padrão | `default_not_translated` |
| CHECK constraints | traduzidos |  |
| CHECK constraints with functions MySQL 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 | chaves estrangeiras, carregadas com FOREIGN_KEY_CHECKS=0 |  |
| 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 banco de dados, 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 | longtext | `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 MySQL

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
mysql --default-character-set=utf8mb4 mydb < sql_server.mysql.sql
```

As chaves estrangeiras são criadas como o dump as declara, com FOREIGN_KEY_CHECKS=0 enquanto as linhas carregam, então uma linha que aponta para uma linha que não existe não para a carga.

Para um dump grande, execute o cliente na mesma máquina do servidor e aumente max_allowed_packet se uma única linha for muito grande.

O IntoSQL Pro carrega o arquivo direto no MySQL pelo app para desktop ou pela linha de comando, sem escrever um script.

## 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 MySQL.

## Perguntas sobre SQL Server para MySQL

### 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?

Sim, para uma coluna por tabela: a coluna IDENTITY que inicia a chave primária vira AUTO_INCREMENT e continua depois do maior id. Sequências não são criadas, porque o MySQL não tem, e o relatório avisa.

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

bit vira tinyint(1), money decimal(19,4), uniqueidentifier char(36), e datetimeoffset datetime em UTC. Os schemas viram prefixos do nome da tabela em um único banco. Colunas que ignoravam maiúsculas comparam de forma exata, e o relatório diz quais.

### 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 MySQL o script carrega?

MySQL 5.7 e posteriores. Cada script de teste carrega no 5.7 e no 9 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 MariaDB](https://intosql.com/pt-br/sql-server-para-mariadb)
- [SQL Server para SQLite](https://intosql.com/pt-br/sql-server-para-sqlite)
- [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 MySQL

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

## Guia e todos os pares

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