---
title: "Migracja MariaDB do SQL Server w przeglądarce"
description: "Migruj bazę MariaDB do SQL Server: zamień jej zrzut w skrypt z tymi samymi tabelami, kluczami, sekwencjami i danymi oraz raportem każdej zmiany."
canonical: https://intosql.com/pl/mariadb-do-sql-server
last_updated: 2026-10-15
---

# Migracja MariaDB do SQL Server w przeglądarce

Upuść zrzut z mariadb-dump, mysqldump, phpMyAdmin lub Adminer jako .sql lub .sql.gz i pobierz skrypt SQL Server z tymi samymi tabelami, kluczami, indeksami i danymi. Każda wartość, której SQL Server nie może przechować bez zmian, i każdy obiekt, którego nie przenosi, są wymienione w raporcie.

[Przewodnik migracji MariaDB do SQL Server](https://intosql.com/docs/migrations/mariadb-to-sql-server)

[Typy danych z MariaDB do SQL Server](https://intosql.com/docs/types/mariadb-to-sql-server)

## Co zmienia się między MariaDB a SQL Server

Każdy wiersz to reguła stosowana przez konwerter, z wpisem, który dodaje do raportu, gdy reguła coś zmienia w twoich danych.

| W MariaDB | W SQL Server | Wpis w raporcie |
| --- | --- | --- |
| TINYINT(1), BOOL | bit, gdy każda wartość to 0 lub 1, w przeciwnym razie smallint | `bool_kept_numeric` |
| UNSIGNED integers | TINYINT UNSIGNED jako tinyint; pozostałe jako następny szerszy typ całkowity z CHECK, że wartość nie jest ujemna, BIGINT UNSIGNED jako bigint, gdy każda wartość się mieści, w przeciwnym razie decimal(38,0) | `unsigned_widened` |
| ZEROFILL and display widths | usunięte | `zerofill_dropped` |
| FLOAT(M,D) | real lub float, bez skali | `float_scale_dropped` |
| DECIMAL(p,s) | decimal(p,s) do 38 cyfr; powyżej nvarchar | `decimal_as_text` |
| BIT(1), BIT(n) | bit; bigint do 63 bitów; decimal(20,0) dla BIT(64) |  |
| zero, partial or impossible dates (0000-00-00, 2024-02-30) | NULL | `invalid_date_null` |
| NOT NULL columns with values that become NULL | NOT NULL usunięte | `not_null_relaxed` |
| DEFAULT '0000-00-00' | brak wartości domyślnej | `zero_date_default` |
| TIME | time, gdy każda wartość mieści się w dobie, w przeciwnym razie nvarchar | `time_as_interval` |
| YEAR | smallint z CHECK zakresu |  |
| CHAR(n), VARCHAR(n) | nvarchar(n) |  |
| text with characters past U+FFFF (emoji) in VARCHAR(n) | nvarchar(2n) lub nvarchar(max) powyżej 4000 | `text_length_widened` |
| DATETIME | datetime2 |  |
| TIMESTAMP | datetimeoffset w strefie czasowej podanej w zrzucie, UTC, gdy jej nie podaje | `timestamp_zone_assumed` |
| ENUM | nvarchar z CHECK dozwolonych wartości |  |
| ENUM holding '' (MySQL's error value) | pusta wartość dopuszczona przez CHECK | `enum_invalid_value` |
| ENUM holding values outside its list | bez CHECK | `enum_check_skipped` |
| SET | nvarchar w zapisie MySQL ('a,b') |  |
| JSON | nvarchar(max) |  |
| NUL bytes in text | zachowane |  |
| text that isn't valid in its character set | błędne bajty jako znak zastępczy | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | skopiowane bez zmian | `mojibake_suspected` |
| AUTO_INCREMENT | IDENTITY, z licznikiem ustawionym za skopiowanymi id |  |
| MyISAM AUTO_INCREMENT on the second column of a key | jeden licznik dla tabeli | `myisam_group_autoincrement` |
| ON UPDATE CURRENT_TIMESTAMP | wyzwalacz AFTER UPDATE | `on_update_trigger` |
| ON UPDATE CURRENT_TIMESTAMP on a table without a primary key | nie jest przenoszone | `on_update_without_key` |
| generated columns | kolumny obliczane, PERSISTED, gdy źródło je przechowuje |  |
| generated columns with functions SQL Server lacks | zwykła kolumna | `generated_not_translated` |
| INVISIBLE columns | zwykłe kolumny | `invisible_column` |
| CHECK constraints | przetłumaczone, wewnątrz CREATE TABLE |  |
| CHECK constraints with functions SQL Server lacks | nie jest tworzone | `check_skipped` |
| CHECK ... NOT ENFORCED | nie jest tworzone | `check_not_enforced` |
| defaults with functions SQL Server lacks | brak wartości domyślnej | `default_not_translated` |
| keys and indexes on a prefix, c(20) | indeks na całej kolumnie | `prefix_whole_column` |
| FULLTEXT indexes | nie jest tworzone | `fulltext_not_created` |
| SPATIAL indexes | nie jest tworzone | `spatial_index_not_created` |
| functional indexes, and indexes on columns of unlimited length | nie jest tworzony | `index_skipped` |
| foreign keys | po danych z WITH NOCHECK, potem sprawdzany z ostrzeżeniem o osieroconych wierszach |  |
| ON DELETE or ON UPDATE that cascades in a cycle or along a second path | NO ACTION | `foreign_key_action_dropped` |
| foreign keys to columns without a unique key | nie jest tworzony | `foreign_key_skipped` |
| table and column names | jak w źródle; zmienione, gdy różnią się tylko wielkością liter | `identifier_renamed` |
| names over 116 characters | skrócone | `name_shortened` |
| GEOMETRY, POINT, POLYGON... | geometry, z SRID każdej wartości |  |
| INET4, INET6, UUID (MariaDB) | nvarchar(39), uniqueidentifier |  |
| BINARY, VARBINARY, BLOB | binary, varbinary, varbinary(max) |  |
| PARTITION BY | jedna tabela | `partitions_dropped` |
| WITH SYSTEM VERSIONING (MariaDB) | tabela z bieżącymi wierszami | `system_versioning_dropped` |
| MyISAM, MEMORY and other engines | zwykła tabela | `engine_dropped` |
| views, triggers, procedures, functions and events | wymienione w raporcie | `not_converted_objects` |
| dumps without CREATE TABLE | typy odczytane z wartości | `no_schema` |
| geometries in a dump without CREATE TABLE | geometry |  |
| _ci collations | porównywanie bazy danych, zwykle bez rozróżniania wielkości liter |  |
| SET NAMES utf8 from utf8mb4 tables | przekonwertowane, z ostrzeżeniem | `dump_lost_four_byte_chars` |
| dumps without SET NAMES whose text isn't UTF-8 | odczytane jako Latin-1 (Windows-1252) | `charset_guessed` |
| sjis, cp932, gbk, big5 dumps | odczytane jako UTF-8, z ostrzeżeniem | `unsupported_charset` |
| UNHEX('..'), CONVERT(b'..', UNSIGNED), CONVERT(".." USING x), ST_GeomFromText('..') in rows | obliczone |  |
| other expressions in rows | NULL | `expression_value` |
| DEFAULT in VALUES | wartość domyślna kolumny | `default_keyword_filled` |
| DEFAULT in VALUES without a literal default | NULL | `default_keyword_null` |
| REPLACE and INSERT IGNORE | zwykłe wiersze | `replace_as_insert` |
| types IntoSQL doesn't know | nvarchar(max) | `unknown_type` |
| values that don't fit their column | NULL | `invalid_value_null` |
| unreadable geometries | NULL | `bad_geometry` |
| CREATE SEQUENCE (MariaDB) | CREATE SEQUENCE ... AS bigint, z następną wartością |  |
| VECTOR(n) (MariaDB 11.7+) | nvarchar(max) z liczbami float jako tablicą JSON | `type_replaced` |

## Załaduj skrypt do SQL Server

Skrypt tworzy tabele, kopiuje wiersze, a potem dodaje klucze, indeksy i klucze obce, więc ładuje się szybko i zatrzymuje przy pierwszym błędzie.

```shell
sqlcmd -b -f 65001 -S localhost -d mydb -i mariadb.sql_server.sql
```

Klucze obce są dodawane z WITH NOCHECK, a potem sprawdzane. Jeśli wiersz wskazuje na nieistniejący wiersz, skrypt podaje, którego ograniczenia to dotyczy, i zostawia je niesprawdzone, zamiast przerwać w połowie.

Przy dużym zrzucie uruchom sqlcmd na tej samej maszynie co serwer. Każda partia do 1000 wierszy jest zatwierdzana osobno, więc dziennik transakcji pozostaje mały.

## Jak zrobić zrzut MariaDB dla najlepszego wyniku

Konwerter odczytuje to, co zawiera zrzut. Te opcje zachowują w nim więcej twoich danych:

- --default-character-set=utf8mb4 zachowuje emoji i inne 4-bajtowe znaki, które zrzut utf8mb3 traci, zanim zobaczy go konwerter.
- --hex-blob zapisuje kolumny binarne i wartości VECTOR szesnastkowo, co przetrwa kopiowanie między systemami.
- --routines --triggers --events dodają te obiekty do zrzutu, aby raport mógł je wymienić.

## Co nie jest konwertowane

Widoki, wyzwalacze, procedury składowane, funkcje i zdarzenia są pisane we własnym języku MariaDB. Raport wymienia je z nazwy i nigdy nie pomija ich po cichu, więc możesz je przepisać dla SQL Server.

## Pytania o konwersję MariaDB do SQL Server

### Czy mój zrzut jest wysyłany?

Nie. Konwerter działa w przeglądarce i odczytuje zrzut z dysku po kawałku, więc nigdy nie opuszcza on twojego komputera. Aplikacja na komputer i wiersz poleceń też konwertują na twoim komputerze.

### Jak duży może być zrzut?

Konwerter nigdy nie trzyma całego zrzutu w pamięci: czyta plik dwa razy, fragmentami, i zapisuje skrypt na bieżąco. Zrzuty wielogigabajtowe konwertują się w przeglądarce, w aplikacji na komputer i w wierszu poleceń.

### Z jakich wersji MariaDB może pochodzić zrzut?

Zrzuty z mariadb-dump i mysqldump z MariaDB od 10.3 do 12, z jednym INSERT na tabelę lub jednym na wiersz. Każdy testowy zrzut pochodzi z MariaDB 10.11, 11.4 i 11.8 i jest porównywany ze źródłem komórka po komórce.

### Czy kolumny UUID, INET6, JSON i VECTOR są zachowywane?

UUID staje się uniqueidentifier, kolumny INET nvarchar, JSON nvarchar(max), a VECTOR tablicą JSON jego liczb float. Daty zerowe stają się NULL, a raport je liczy.

### Czy wartości AUTO_INCREMENT i sekwencje są zachowywane?

Tak. Każda kolumna AUTO_INCREMENT staje się kolumną IDENTITY, która idzie dalej po najwyższym id. Sekwencje stają się sekwencjami SQL Server, a wartości domyślne, które z nich pobierają, nadal z nich pobierają.

### A procedury składowane i wyzwalacze?

Raport wymienia je z nazwy, ale nie są konwertowane, bo każda baza danych zapisuje je we własnym języku.

### Na jakich wersjach SQL Server ładuje się skrypt?

SQL Server od 2017 do 2025. Ten sam skrypt ładuje się na każdej z nich i zatrzymuje przy pierwszym błędzie, jeśli coś pójdzie nie tak.

## Z MariaDB

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

## Do SQL Server

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

## Przewodnik i każda para

- [SQL Server do MariaDB](https://intosql.com/pl/sql-server-do-mariadb)
- [Przewodnik migracji MariaDB do SQL Server](https://intosql.com/docs/migrations/mariadb-to-sql-server)
- [Typy danych z MariaDB do SQL Server](https://intosql.com/docs/types/mariadb-to-sql-server)
- [Każda para baz danych](https://intosql.com/pl/migracja-bazy-danych)
