---
title: "Миграция SQL Server в MariaDB в браузере"
description: "Миграция базы SQL Server в MariaDB: скрипт, созданный SSMS, превращается в скрипт с теми же таблицами, ключами и данными и отчетом о каждом изменении."
canonical: https://intosql.com/ru/sql-server-v-mariadb
last_updated: 2026-10-15
---

# Миграция SQL Server в MariaDB в браузере

Перетащите скрипт, который Generate Scripts в SSMS записывает со схемой и данными, в формате .sql или .sql.gz, в UTF-16 или UTF-8, и скачайте скрипт MariaDB с теми же таблицами, ключами, индексами и данными. Каждое значение, которое MariaDB не может хранить как есть, и каждый объект, который он не переносит, указаны в отчете.

[Руководство по миграции SQL Server в MariaDB](https://intosql.com/docs/migrations/sql-server-to-mariadb)

[Типы данных из SQL Server в MariaDB](https://intosql.com/docs/types/sql-server-to-mariadb)

## Что меняется при переходе с SQL Server на MariaDB

Каждая строка - это правило, которое применяет конвертер, и строка отчета, которую он пишет, когда правило что-то меняет в ваших данных.

| В SQL Server | В MariaDB | Строка отчета |
| --- | --- | --- |
| bit | tinyint(1) |  |
| char(n), varchar(n), nchar(n), nvarchar(n), varchar(max), text | char(n), varchar(n) до 1024 символов, дальше типы text |  |
| decimal(p,s), money, smallmoney | decimal(p,s); money как decimal(19,4) |  |
| datetime, datetime2, smalldatetime | datetime(p) |  |
| datetime2(7), time(7) and datetimeoffset(7) | шесть цифр долей секунды, седьмая отбрасывается | `fraction_cut` |
| datetimeoffset | datetime(p) в UTC | `moments_as_utc` |
| time | time(p) |  |
| dates before the year 1000 | NULL | `date_out_of_range` |
| json (SQL Server 2025) | json, longtext с проверкой JSON |  |
| uniqueidentifier | uuid |  |
| binary, varbinary, image | binary(n), varbinary(n) и типы blob |  |
| geometry, geography | blob с собственными байтами SQL Server | `spatial_as_native` |
| rowversion, timestamp | blob, пустой | `rowversion_empty` |
| xml, sql_variant, hierarchyid, vector | longtext | `type_replaced` |
| collations that ignore case (_CI_) | точное сравнение (utf8mb4_bin) | `case_insensitive_collation` |
| IDENTITY | AUTO_INCREMENT, продолжается после наибольшего id |  |
| IDENTITY columns that don't lead the primary key | обычное целое | `counter_dropped` |
| CREATE SEQUENCE | CREATE SEQUENCE с теми же параметрами |  |
| computed columns | генерируемые столбцы, STORED при PERSISTED, иначе VIRTUAL |  |
| computed columns with functions MariaDB lacks | обычный столбец | `generated_not_translated` |
| defaults with functions MariaDB lacks, and NEXT VALUE FOR | без значения по умолчанию | `default_not_translated` |
| CHECK constraints | переводится |  |
| CHECK constraints with functions MariaDB lacks | не создается | `check_skipped` |
| CHECK constraints added WITH NOCHECK or disabled | не создается | `check_not_enforced` |
| filtered and columnstore indexes | не создается | `index_skipped` |
| foreign keys | внешние ключи, загрузка с FOREIGN_KEY_CHECKS=0 |  |
| foreign keys to tables the dump doesn't create | не создается | `foreign_key_skipped` |
| tables on a partition scheme | одна таблица со строками всех секций | `partitions_dropped` |
| temporal tables (SYSTEM_VERSIONING) | WITH SYSTEM VERSIONING, начиная с текущих строк; таблица истории как обычная таблица |  |
| schemas | одна база данных, имя таблицы начинается с имени ее схемы | `schemas_merged` |
| NOT NULL columns with values that become NULL | NOT NULL снимается | `not_null_relaxed` |
| views, functions, procedures, triggers, synonyms, types and partition functions | перечисляются в отчете | `not_converted_objects` |
| scripts without CREATE TABLE (data only) | типы определяются по значениям | `no_schema` |
| expressions in INSERT values | NULL | `expression_value` |
| types IntoSQL doesn't know | longtext | `unknown_type` |
| NUL characters in text | сохраняется |  |
| text that isn't valid in its encoding | неверные байты заменяются символом замены | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | копируется как есть | `mojibake_suspected` |

## Загрузите скрипт в MariaDB

Скрипт создает таблицы, копирует строки, затем добавляет ключи, индексы и внешние ключи, поэтому загрузка идет быстро и останавливается на первой ошибке.

```shell
mariadb --default-character-set=utf8mb4 mydb < sql_server.mariadb.sql
```

Внешние ключи создаются так, как их объявляет дамп, с FOREIGN_KEY_CHECKS=0 на время загрузки строк, как это делает mysqldump.

Для большого дампа запускайте клиент на той же машине, где работает сервер, и увеличьте max_allowed_packet, если отдельная строка очень большая.

IntoSQL Pro загружает файл прямо в MariaDB из приложения для компьютера или командной строки, без написания скрипта.

## Как создать дамп SQL Server для лучшего результата

Конвертер читает то, что есть в дампе. Эти параметры сохраняют в нем больше ваших данных:

- В SSMS щелкните базу данных правой кнопкой, выберите Tasks, Generate Scripts и отметьте таблицы. dbatools, mssql-scripter и другие инструменты на той же библиотеке пишут такой же скрипт.
- В разделе Advanced задайте для Types of data to script значение Schema and data. Скрипт только со схемой содержит таблицы без строк.
- Сохраните его в Unicode, как по умолчанию в SSMS, или в UTF-8: оба читаются одинаково, gzip тоже подходит.

## Что не конвертируется

Представления, функции, процедуры, триггеры, синонимы, правила и политики безопасности написаны на T-SQL. Они перечислены в отчете по имени и никогда не удаляются молча, чтобы вы могли переписать их для MariaDB.

## Вопросы о SQL Server в MariaDB

### Мой дамп загружается на сервер?

Нет. Конвертер работает в вашем браузере и читает дамп с диска по частям, поэтому он никогда не покидает ваш компьютер. Приложение для компьютера и командная строка тоже конвертируют на вашем компьютере.

### Насколько большим может быть дамп?

Конвертер никогда не держит весь дамп в памяти: он читает файл дважды, по диапазонам, и пишет скрипт по ходу чтения. Дампы в несколько гигабайт конвертируются в браузере, в приложении для компьютера и в командной строке.

### Читает ли он файл UTF-16, который сохраняет SSMS?

Да. SSMS по умолчанию сохраняет скрипты в UTF-16, а конвертер одинаково читает UTF-16 и UTF-8, сжатые gzip или нет, с GO между пакетами.

### Из каких версий SQL Server может быть скрипт?

Скрипты, которые SSMS, dbatools или mssql-scripter пишут из SQL Server 2017 и новее. Каждый тестовый скрипт создан в SQL Server 2017, 2022 и 2025 и сверен с источником ячейка за ячейкой.

### Сохраняются ли значения IDENTITY?

Да, для одного столбца на таблицу: столбец IDENTITY, с которого начинается первичный ключ, становится AUTO_INCREMENT и продолжается после наибольшего id. Последовательности становятся последовательностями MariaDB с теми же параметрами.

### Что происходит с money, datetimeoffset и другими типами SQL Server?

bit становится tinyint(1), money - decimal(19,4), uniqueidentifier - UUID, а datetimeoffset - datetime в UTC. Темпоральные таблицы сохраняют системное версионирование. Столбцы, которые не учитывали регистр, сравниваются точно, и отчет указывает, какие именно.

### А процедуры, триггеры и представления?

Они перечислены в отчете по имени и не конвертируются, потому что каждая база данных пишет их на своем языке.

### На каких версиях MariaDB загружается скрипт?

MariaDB 10.11 и новее. Каждый тестовый скрипт загружается на 10.11 и 11.4 и останавливается на первой ошибке, если что-то пойдет не так.

## Из SQL Server

- [SQL Server в PostgreSQL](https://intosql.com/ru/sql-server-v-postgresql)
- [SQL Server в MySQL](https://intosql.com/ru/sql-server-v-mysql)
- [SQL Server в SQLite](https://intosql.com/ru/sql-server-v-sqlite)
- [SQL Server в SQL Server](https://intosql.com/ru/sql-server-v-sql-server)
- [SQL Server в Oracle](https://intosql.com/ru/sql-server-v-oracle)

## В MariaDB

- [MySQL в MariaDB](https://intosql.com/ru/mysql-v-mariadb)
- [MariaDB в MariaDB](https://intosql.com/ru/mariadb-v-mariadb)
- [PostgreSQL в MariaDB](https://intosql.com/ru/postgresql-v-mariadb)
- [SQLite в MariaDB](https://intosql.com/ru/sqlite-v-mariadb)
- [Oracle в MariaDB](https://intosql.com/ru/oracle-v-mariadb)

## Руководство и все пары

- [MariaDB в SQL Server](https://intosql.com/ru/mariadb-v-sql-server)
- [Руководство по миграции SQL Server в MariaDB](https://intosql.com/docs/migrations/sql-server-to-mariadb)
- [Типы данных из SQL Server в MariaDB](https://intosql.com/docs/types/sql-server-to-mariadb)
- [Все пары баз данных](https://intosql.com/ru/migratsiya-bazy-dannykh)
