SQL Server - MariaDB dönüştürme
SSMS'in Generate Scripts aracının şema ve veriyle yazdığı betiği .sql veya .sql.gz, UTF-16 veya UTF-8 olarak bırakın ve aynı tablolar, anahtarlar, indeksler ve verilerle bir MariaDB betiği indirin. MariaDB'in olduğu gibi tutamadığı her değer ve taşımadığı her nesne raporda listelenir.
18 satır dönüştürüldü, 3 düzeltme, reddedilen yok
shop_2024_sqlserver.sql içindeki tablolarSQL Server dökümü · SQL Server Management Objects ile yazıldı · utf-8
orders10 satır1
11 sütun id int not null customer_id int not null status varchar(10) not null total decimal(19,4) not null items tinyint unsigned not null ordered_at datetime not null shipped_at datetime(6) note text details text order_ref uuid not null total_with_tax decimal(12,2) customers8 satır2
8 sütun id int not null name varchar(100) not null email varchar(200) not null country char(2) not null is_active tinyint(1) not null signed_up date created_at datetime not null row_version blob
Dönüştürülmedi
- Görünüm paid_orders
- Tetikleyici orders_no_negative
Her veritabanı bunları kendi dilinde yazar. Bunları MariaDB için yeniden yazın.
-- Written by IntoSQL from a SQL Server dump. Load it with: mariadb --default-character-set=utf8mb4 <database> < <file>
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
SET UNIQUE_CHECKS = 0;
SET SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO,ALLOW_INVALID_DATES';
CREATE TABLE `orders` (
`id` int NOT NULL AUTO_INCREMENT,
`customer_id` int NOT NULL,
`status` varchar(10) NOT NULL DEFAULT 'pending',
`total` decimal(19,4) NOT NULL,
`items` tinyint unsigned NOT NULL DEFAULT 1,
`ordered_at` datetime NOT NULL,
`shipped_at` datetime(6),
`note` text,
`details` text,
`order_ref` uuid NOT NULL DEFAULT (uuid()),
`total_with_tax` decimal(12,2) GENERATED ALWAYS AS (cast(`total` * (1.16) AS DECIMAL(12,2))) STORED,
PRIMARY KEY (`id`),
KEY `idx_orders_customer` (`customer_id`),
KEY `idx_orders_status_date` (`status`,`ordered_at`),
CONSTRAINT `check2` CHECK (`status` = 'cancelled' OR `status` = 'shipped' OR `status` = 'paid' OR `status` = 'pending'),
CONSTRAINT `check3` CHECK (`total` >= (0)),
FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`)
) AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
CREATE TABLE `customers` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`email` varchar(200) NOT NULL,
`country` char(2) NOT NULL DEFAULT 'US',
`is_active` tinyint(1) NOT NULL DEFAULT 1,
`signed_up` date,
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`row_version` blob,
PRIMARY KEY (`id`),
UNIQUE KEY (`email`)
) AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='People who bought at least once';
INSERT INTO `customers` (`id`,`name`,`email`,`country`,`is_active`,`signed_up`,`created_at`) VALUES (1,'Ana Martínez','ana@example.com','MX',1,'2023-01-15','2023-01-15 10:24:00.000000');
INSERT INTO `customers` (`id`,`name`,`email`,`country`,`is_active`,`signed_up`,`created_at`) VALUES (2,'Zoë Müller','zoe@example.de','DE',1,'2023-02-03','2023-02-03 08:11:42.000000');
INSERT INTO `customers` (`id`,`name`,`email`,`country`,`is_active`,`signed_up`,`created_at`) VALUES (3,'José Peña','jose@example.es','ES',0,'2023-03-21','2023-03-21 19:05:17.000000');
INSERT INTO `customers` (`id`,`name`,`email`,`country`,`is_active`,`signed_up`,`created_at`) VALUES (4,'李雷','lilei@example.cn','CN',1,'2023-05-09','2023-05-09 02:40:00.000000');
INSERT INTO `customers` (`id`,`name`,`email`,`country`,`is_active`,`signed_up`,`created_at`) VALUES (5,'Noah O\'Brien','noah@example.ie','IE',1,NULL,'2023-06-30 14:00:00.000000');
INSERT INTO `customers` (`id`,`name`,`email`,`country`,`is_active`,`signed_up`,`created_at`) VALUES (6,'Amélie Laurent','amelie@example.fr','FR',1,'2024-01-02','2024-01-02 09:30:00.000000');
INSERT INTO `customers` (`id`,`name`,`email`,`country`,`is_active`,`signed_up`,`created_at`) VALUES (7,'Ravi Patel','ravi@example.in','IN',0,'2024-02-29','2024-02-29 23:59:59.000000');
INSERT INTO `customers` (`id`,`name`,`email`,`country`,`is_active`,`signed_up`,`created_at`) VALUES (8,'Sofia Rossi 🌻','sofia@example.it','IT',1,'2024-04-12','2024-04-12 12:12:12.000000');
INSERT INTO `orders` (`id`,`customer_id`,`status`,`total`,`items`,`ordered_at`,`shipped_at`,`note`,`details`,`order_ref`) VALUES (1,1,'shipped',129.9000,3,'2024-03-01T10:00:00.000000','2024-03-02T16:30:00.123456',NULL,'{"gift": false}','0b7a4c2e-3f1d-4e8a-9c55-1a2b3c4d5e6f');
INSERT INTO `orders` (`id`,`customer_id`,`status`,`total`,`items`,`ordered_at`,`shipped_at`,`note`,`details`,`order_ref`) VALUES (2,2,'paid',54.0000,1,'2024-03-02T11:15:00.000000',NULL,'Gift wrap 🎁','{"gift": true, "wrap": "red"}','1c8b5d3f-4a2e-4f9b-8d66-2b3c4d5e6f70');
INSERT INTO `orders` (`id`,`customer_id`,`status`,`total`,`items`,`ordered_at`,`shipped_at`,`note`,`details`,`order_ref`) VALUES (3,1,'cancelled',12.5000,1,'2024-03-03T09:45:00.000000',NULL,'Customer changed their mind',NULL,'2d9c6e4a-5b3f-4a0c-9e77-3c4d5e6f7081');
INSERT INTO `orders` (`id`,`customer_id`,`status`,`total`,`items`,`ordered_at`,`shipped_at`,`note`,`details`,`order_ref`) VALUES (4,4,'shipped',980.0000,12,'2024-03-05T02:10:00.000000','2024-03-07T08:00:00.000000','请小心轻放','{"fragile": true}','3e0d7f5b-6c4a-4b1d-8f88-4d5e6f708192');
INSERT INTO `orders` (`id`,`customer_id`,`status`,`total`,`items`,`ordered_at`,`shipped_at`,`note`,`details`,`order_ref`) VALUES (5,5,'pending',45.7500,2,'2024-03-08T17:20:00.000000',NULL,'Leave at the door; ring twice',NULL,'4f1e806c-7d5b-4c2e-9a99-5e6f708192a3');
INSERT INTO `orders` (`id`,`customer_id`,`status`,`total`,`items`,`ordered_at`,`shipped_at`,`note`,`details`,`order_ref`) VALUES (6,6,'shipped',310.4000,5,'2024-03-10T13:00:00.000000','2024-03-11T09:00:00.000000','Fragile: "glass"','{"fragile": true}','50f2917d-8e6c-4d3f-8baa-6f708192a3b4');
INSERT INTO `orders` (`id`,`customer_id`,`status`,`total`,`items`,`ordered_at`,`shipped_at`,`note`,`details`,`order_ref`) VALUES (7,8,'paid',76.2000,2,'2024-03-11T18:45:00.000000',NULL,NULL,NULL,'6103a28e-9f7d-4e40-9cbb-708192a3b4c5');
INSERT INTO `orders` (`id`,`customer_id`,`status`,`total`,`items`,`ordered_at`,`shipped_at`,`note`,`details`,`order_ref`) VALUES (8,2,'shipped',19.9900,1,'2024-03-12T08:00:00.000000','9999-12-31T23:59:59.999999','Shipped date set to the maximum by an old import',NULL,'7214b39f-a08e-4f51-8dcc-8192a3b4c5d6');
INSERT INTO `orders` (`id`,`customer_id`,`status`,`total`,`items`,`ordered_at`,`shipped_at`,`note`,`details`,`order_ref`) VALUES (9,3,'shipped',64.0000,2,'2024-03-14T15:30:00.000000','2024-03-15T10:00:00.000000','Two parcels','{"parcels": [1, 2]}','8325c4a0-b19f-4062-9edd-92a3b4c5d6e7');
INSERT INTO `orders` (`id`,`customer_id`,`status`,`total`,`items`,`ordered_at`,`shipped_at`,`note`,`details`,`order_ref`) VALUES (10,7,'paid',1499.0000,1,'2024-03-15T21:05:00.000000',NULL,'C:\\Users\\ravi\\invoice.pdf',NULL,'9436d5b1-c2a0-4173-8fee-a3b4c5d6e7f8');
SET UNIQUE_CHECKS = 1;
SET FOREIGN_KEY_CHECKS = 1;
Düzeltmeler
- orders tablosunun "shipped_at" sütunu datetime2(7); MariaDB türünün tuttuğundan fazla saniye kesri basamağı var, bu yüzden datetime(6) olur ve son basamaklar kesilir.
- customers tablosunun "created_at" sütunu saat dilimli anlar içeriyor; MariaDB'de bunu koruyan bir tür yok, bu yüzden datetime olarak UTC'de saklanır.
- customers tablosunun "row_version" sütunu, SQL Server'ın kendisinin ayarladığı bir satır sürümüdür; dökümde bunun için değer yoktur, bu yüzden blob olur ve boş kalır.
Kontrol edilmeli
- Kaynakta 6 metin sütunu büyük/küçük harf ayırmadan karşılaştırıyor; MariaDB tam karşılaştırır, bu yüzden benzersiz anahtarlar ve aramalar farklı davranabilir. Gereken sütunlarda büyük/küçük harf duyarsız bir harmanlama veya sütun türü kullanın.
- 2 görünüm, tetikleyici, rutin veya olay dönüştürülmedi; rapor her birini listeliyor. Bunları MariaDB'de elle yeniden oluşturun.
- orders üzerindeki check1 CHECK kısıtı MariaDB için yazılamıyor (function isjson); bu yüzden oluşturulmadı. Önemliyse CHECK kısıtını elle yazın.
- orders üzerindeki idx_orders_pending indeksi MariaDB için yazılamayan bir ifade kullanıyor (neither MySQL 5.7 nor MariaDB index an expression); bu yüzden oluşturulmadı. Sorgular gerektiriyorsa indeksi elle oluşturun.
Dosyan bu bilgisayarda dönüştürülür ve asla yüklenmez.
Diğer örnekler:
SQL Server ile MariaDB arasında neler değişir
Her satır, dönüştürücünün uyguladığı bir kuraldır; yanında, kural verilerinizde bir şeyi değiştirdiğinde yazılan rapor satırı yer alır.
bit
tinyint(1)
MariaDB'nin BOOLEAN türü TINYINT(1)'dir: bit'in tuttuğu gibi 1 ve 0.
char(n), varchar(n), nchar(n), nvarchar(n), varchar(max), text
char(n), 1024 karaktere kadar varchar(n), ötesi text türleri
Metin her karakteri utf8mb4 olarak korur. Bir anahtardaki sütun en fazla varchar(768) olur; bir anahtarın tutabildiği en uzun değer budur.
decimal(p,s), money, smallmoney
decimal(p,s); money decimal(19,4) olarak
decimal 65 basamak tutar, SQL Server'ın 38 basamağından fazla, bu yüzden her değer tam kalır.
datetime, datetime2, smalldatetime
datetime(p)
datetime her ikisinde de bir duvar saati okumasıdır.
datetime2(7), time(7) and datetimeoffset(7)
saniyenin altı basamağı, yedincisi kesilir
MariaDB mikrosaniyeleri tutar; yedinci basamak (100 nanosaniye) yuvarlanmaz, kesilir, böylece hiçbir değer sonraki saniyeye veya güne kaymaz.
Rapor satırı: fraction_cut
datetimeoffset
UTC'de datetime(p)
MariaDB'nin TIMESTAMP türü yalnızca 2038'e kadar ulaşır, bu yüzden anlar UTC'de datetime olarak saklanır; her değerin farkı ne olursa olsun an aynıdır.
Rapor satırı: moments_as_utc
time
time(p)
Günün aynı saatleri.
dates before the year 1000
NULL
MariaDB 1000 ile 9999 arasındaki yılları saklar, SQL Server ise 1. yıla kadar gider. Bu değerler NULL olur ve rapor onları sayar.
Rapor satırı: date_out_of_range
json (SQL Server 2025)
json, JSON denetimli bir longtext
Aynı JSON değerleri; MariaDB'nin JSON fonksiyonları bunları okur.
uniqueidentifier
uuid
Aynı tanımlayıcılar, küçük harfle yazılır.
binary, varbinary, image
binary(n), varbinary(n) ve blob türleri
Baytlar bayt olarak kalır.
geometry, geography
SQL Server'ın kendi baytlarıyla blob
SSMS uzamsal değerleri SQL Server'ın serileştirmesiyle yazar ve bu bayt bayt korunur.
Rapor satırı: spatial_as_native
rowversion, timestamp
blob, boş
SQL Server satır sürümünü kendisi ayarlar ve SSMS bunun için değer yazmaz.
Rapor satırı: rowversion_empty
xml, sql_variant, hierarchyid, vector
longtext
MariaDB'de karşılık gelen bir tür yoktur; xml ve sql_variant her değerin metnini, hierarchyid ise /1/2/ gibi yolunu korur.
Rapor satırı: type_replaced
collations that ignore case (_CI_)
tam karşılaştırma (utf8mb4_bin)
Tablolar utf8mb4_bin kullanır, böylece benzersiz anahtarlar SQL Server'ın ayrı tuttuğunu ayrı tutar; büyük/küçük harfi yok sayan sütunlar bunu kaybeder. Aksan kuralları sürümler arasında farklıdır, bu yüzden hiçbir _ci harmanlaması her sürümde SQL Server'ınkiyle eşleşmez.
Rapor satırı: case_insensitive_collation
IDENTITY
en yüksek id'den sonra devam eden AUTO_INCREMENT
Birincil anahtarın başındaki sütun sayar; sayaç en yüksek id'den sonra devam eder.
IDENTITY columns that don't lead the primary key
düz bir tam sayı
MariaDB tablo başına bir sütun sayar, bir anahtarın başında olanı; diğerleri değerlerini sayaçsız korur.
Rapor satırı: counter_dropped
CREATE SEQUENCE
aynı seçeneklerle CREATE SEQUENCE
MariaDB sequence nesneleri aynı şekilde çalışır. SSMS bir sequence'ın nereye ulaştığını yazmaz, bu yüzden oluşturulduğu değerden başlar.
computed columns
üretilen sütunlar, PERSISTED ise STORED, değilse VIRTUAL
MariaDB bunları aynı iki şekilde hesaplar; CONCAT, NULL'u SQL Server'daki gibi boş sayacak şekilde yazılır.
computed columns with functions MariaDB lacks
düz bir sütun
Yazılamayan bir formül düz bir sütun ve bir rapor satırı bırakır; SSMS hesaplanan sütunlar için değer yazmaz.
Rapor satırı: generated_not_translated
defaults with functions MariaDB lacks, and NEXT VALUE FOR
varsayılan değer yok
Yazılamayan bir varsayılan değer dışarıda bırakılır ve raporlanır.
Rapor satırı: default_not_translated
CHECK constraints
çevrilir
Aynı CHECK kısıtları, her satır yüklenirken denetlenir.
CHECK constraints with functions MariaDB lacks
oluşturulmaz
Yazılamayan bir CHECK kısıtı dışarıda bırakılır ve raporlanır.
Rapor satırı: check_skipped
CHECK constraints added WITH NOCHECK or disabled
oluşturulmaz
SQL Server bu CHECK kısıtlarını uygulamaz, bu yüzden satırlar onları ihlal edebilir.
Rapor satırı: check_not_enforced
filtered and columnstore indexes
oluşturulmaz
IntoSQL tüm sütunlar üzerinde b-tree indeksler yazar; diğerlerini yüklemeden sonra yeniden oluşturun.
Rapor satırı: index_skipped
foreign keys
FOREIGN_KEY_CHECKS=0 ile yüklenen yabancı anahtarlar
Satırlar herhangi bir sırayla yüklenir, anahtarlar sonrasında yeni satırları denetler.
foreign keys to tables the dump doesn't create
oluşturulmaz
Bir anahtar, var olmayan bir tabloya başvuramaz.
Rapor satırı: foreign_key_skipped
tables on a partition scheme
her bölümün satırlarını içeren tek tablo
Satırlar aynıdır; gerekiyorsa tabloyu MariaDB'de yeniden bölümleyin.
Rapor satırı: partitions_dropped
temporal tables (SYSTEM_VERSIONING)
mevcut satırlardan başlayarak WITH SYSTEM VERSIONING; geçmiş tablosu düz bir tablo olarak
MariaDB bundan sonra geçmişi kendisi tutar; SQL Server'ın dönem sütunları ve geçmiş tablosu olduğu gibi kopyalanır.
schemas
tek veritabanı, tabloların adı önce şemalarının adıyla başlar
MariaDB'nin şemaları veritabanlarıdır ve tek bir veritabanına yüklenen bir betik bunları oluşturamaz; dbo içindeki tablolar adlarını korur.
Rapor satırı: schemas_merged
NOT NULL columns with values that become NULL
NOT NULL kaldırılır
Değerleri NULL olmak zorunda kalan bir sütun NOT NULL kısıtını koruyamaz, yoksa yükleme durur.
Rapor satırı: not_null_relaxed
views, functions, procedures, triggers, synonyms, types and partition functions
raporda listelenir
Kodları T-SQL ile yazılmıştır, bu yüzden yeniden oluşturmanız için listelenirler.
Rapor satırı: not_converted_objects
scripts without CREATE TABLE (data only)
değerlerden okunan türler
Yalnızca veri içeren bir betikte yalnızca satırlar vardır, bu yüzden türler değerlerden gelir.
Rapor satırı: no_schema
expressions in INSERT values
NULL
Veritabanı çalıştırmayan bir dönüştürücü bunları hesaplayamaz.
Rapor satırı: expression_value
types IntoSQL doesn't know
longtext
Metin her değeri tutar; yüklemeden sonra türü değiştirin.
Rapor satırı: unknown_type
NUL characters in text
korunur
Değer, NUL karakteri kaçışlanarak kopyalanır.
text that isn't valid in its encoding
hatalı baytlar yerine koyma karakteri olarak
Betik UTF-8'dir ve her değer geçerli metin olmalıdır.
Rapor satırı: invalid_utf8_replaced
text decoded twice (ñ)
olduğu gibi kopyalanır
Betik tam olarak bu karakterleri içerir, bu yüzden kopyalanırlar; rapor onları gösterir.
Rapor satırı: mojibake_suspected
| SQL Server içinde | MariaDB içinde | Rapor satırı |
|---|---|---|
| bit | tinyint(1)MariaDB'nin BOOLEAN türü TINYINT(1)'dir: bit'in tuttuğu gibi 1 ve 0. | |
| char(n), varchar(n), nchar(n), nvarchar(n), varchar(max), text | char(n), 1024 karaktere kadar varchar(n), ötesi text türleriMetin her karakteri utf8mb4 olarak korur. Bir anahtardaki sütun en fazla varchar(768) olur; bir anahtarın tutabildiği en uzun değer budur. | |
| decimal(p,s), money, smallmoney | decimal(p,s); money decimal(19,4) olarakdecimal 65 basamak tutar, SQL Server'ın 38 basamağından fazla, bu yüzden her değer tam kalır. | |
| datetime, datetime2, smalldatetime | datetime(p)datetime her ikisinde de bir duvar saati okumasıdır. | |
| datetime2(7), time(7) and datetimeoffset(7) | saniyenin altı basamağı, yedincisi kesilirMariaDB mikrosaniyeleri tutar; yedinci basamak (100 nanosaniye) yuvarlanmaz, kesilir, böylece hiçbir değer sonraki saniyeye veya güne kaymaz. | fraction_cut |
| datetimeoffset | UTC'de datetime(p)MariaDB'nin TIMESTAMP türü yalnızca 2038'e kadar ulaşır, bu yüzden anlar UTC'de datetime olarak saklanır; her değerin farkı ne olursa olsun an aynıdır. | moments_as_utc |
| time | time(p)Günün aynı saatleri. | |
| dates before the year 1000 | NULLMariaDB 1000 ile 9999 arasındaki yılları saklar, SQL Server ise 1. yıla kadar gider. Bu değerler NULL olur ve rapor onları sayar. | date_out_of_range |
| json (SQL Server 2025) | json, JSON denetimli bir longtextAynı JSON değerleri; MariaDB'nin JSON fonksiyonları bunları okur. | |
| uniqueidentifier | uuidAynı tanımlayıcılar, küçük harfle yazılır. | |
| binary, varbinary, image | binary(n), varbinary(n) ve blob türleriBaytlar bayt olarak kalır. | |
| geometry, geography | SQL Server'ın kendi baytlarıyla blobSSMS uzamsal değerleri SQL Server'ın serileştirmesiyle yazar ve bu bayt bayt korunur. | spatial_as_native |
| rowversion, timestamp | blob, boşSQL Server satır sürümünü kendisi ayarlar ve SSMS bunun için değer yazmaz. | rowversion_empty |
| xml, sql_variant, hierarchyid, vector | longtextMariaDB'de karşılık gelen bir tür yoktur; xml ve sql_variant her değerin metnini, hierarchyid ise /1/2/ gibi yolunu korur. | type_replaced |
| collations that ignore case (_CI_) | tam karşılaştırma (utf8mb4_bin)Tablolar utf8mb4_bin kullanır, böylece benzersiz anahtarlar SQL Server'ın ayrı tuttuğunu ayrı tutar; büyük/küçük harfi yok sayan sütunlar bunu kaybeder. Aksan kuralları sürümler arasında farklıdır, bu yüzden hiçbir _ci harmanlaması her sürümde SQL Server'ınkiyle eşleşmez. | case_insensitive_collation |
| IDENTITY | en yüksek id'den sonra devam eden AUTO_INCREMENTBirincil anahtarın başındaki sütun sayar; sayaç en yüksek id'den sonra devam eder. | |
| IDENTITY columns that don't lead the primary key | düz bir tam sayıMariaDB tablo başına bir sütun sayar, bir anahtarın başında olanı; diğerleri değerlerini sayaçsız korur. | counter_dropped |
| CREATE SEQUENCE | aynı seçeneklerle CREATE SEQUENCEMariaDB sequence nesneleri aynı şekilde çalışır. SSMS bir sequence'ın nereye ulaştığını yazmaz, bu yüzden oluşturulduğu değerden başlar. | |
| computed columns | üretilen sütunlar, PERSISTED ise STORED, değilse VIRTUALMariaDB bunları aynı iki şekilde hesaplar; CONCAT, NULL'u SQL Server'daki gibi boş sayacak şekilde yazılır. | |
| computed columns with functions MariaDB lacks | düz bir sütunYazılamayan bir formül düz bir sütun ve bir rapor satırı bırakır; SSMS hesaplanan sütunlar için değer yazmaz. | generated_not_translated |
| defaults with functions MariaDB lacks, and NEXT VALUE FOR | varsayılan değer yokYazılamayan bir varsayılan değer dışarıda bırakılır ve raporlanır. | default_not_translated |
| CHECK constraints | çevrilirAynı CHECK kısıtları, her satır yüklenirken denetlenir. | |
| CHECK constraints with functions MariaDB lacks | oluşturulmazYazılamayan bir CHECK kısıtı dışarıda bırakılır ve raporlanır. | check_skipped |
| CHECK constraints added WITH NOCHECK or disabled | oluşturulmazSQL Server bu CHECK kısıtlarını uygulamaz, bu yüzden satırlar onları ihlal edebilir. | check_not_enforced |
| filtered and columnstore indexes | oluşturulmazIntoSQL tüm sütunlar üzerinde b-tree indeksler yazar; diğerlerini yüklemeden sonra yeniden oluşturun. | index_skipped |
| foreign keys | FOREIGN_KEY_CHECKS=0 ile yüklenen yabancı anahtarlarSatırlar herhangi bir sırayla yüklenir, anahtarlar sonrasında yeni satırları denetler. | |
| foreign keys to tables the dump doesn't create | oluşturulmazBir anahtar, var olmayan bir tabloya başvuramaz. | foreign_key_skipped |
| tables on a partition scheme | her bölümün satırlarını içeren tek tabloSatırlar aynıdır; gerekiyorsa tabloyu MariaDB'de yeniden bölümleyin. | partitions_dropped |
| temporal tables (SYSTEM_VERSIONING) | mevcut satırlardan başlayarak WITH SYSTEM VERSIONING; geçmiş tablosu düz bir tablo olarakMariaDB bundan sonra geçmişi kendisi tutar; SQL Server'ın dönem sütunları ve geçmiş tablosu olduğu gibi kopyalanır. | |
| schemas | tek veritabanı, tabloların adı önce şemalarının adıyla başlarMariaDB'nin şemaları veritabanlarıdır ve tek bir veritabanına yüklenen bir betik bunları oluşturamaz; dbo içindeki tablolar adlarını korur. | schemas_merged |
| NOT NULL columns with values that become NULL | NOT NULL kaldırılırDeğerleri NULL olmak zorunda kalan bir sütun NOT NULL kısıtını koruyamaz, yoksa yükleme durur. | not_null_relaxed |
| views, functions, procedures, triggers, synonyms, types and partition functions | raporda listelenirKodları T-SQL ile yazılmıştır, bu yüzden yeniden oluşturmanız için listelenirler. | not_converted_objects |
| scripts without CREATE TABLE (data only) | değerlerden okunan türlerYalnızca veri içeren bir betikte yalnızca satırlar vardır, bu yüzden türler değerlerden gelir. | no_schema |
| expressions in INSERT values | NULLVeritabanı çalıştırmayan bir dönüştürücü bunları hesaplayamaz. | expression_value |
| types IntoSQL doesn't know | longtextMetin her değeri tutar; yüklemeden sonra türü değiştirin. | unknown_type |
| NUL characters in text | korunurDeğer, NUL karakteri kaçışlanarak kopyalanır. | |
| text that isn't valid in its encoding | hatalı baytlar yerine koyma karakteri olarakBetik UTF-8'dir ve her değer geçerli metin olmalıdır. | invalid_utf8_replaced |
| text decoded twice (ñ) | olduğu gibi kopyalanırBetik tam olarak bu karakterleri içerir, bu yüzden kopyalanırlar; rapor onları gösterir. | mojibake_suspected |
Betiği MariaDB veritabanına yükleyin
Betik tabloları oluşturur, satırları kopyalar, ardından anahtarları, indeksleri ve yabancı anahtarları ekler; böylece hızlı yüklenir ve ilk hatada durur.
mariadb --default-character-set=utf8mb4 mydb < sql_server.mariadb.sqlYabancı anahtarlar, mysqldump'ın yaptığı gibi, satırlar yüklenirken FOREIGN_KEY_CHECKS=0 ile dökümün tanımladığı şekilde oluşturulur.
Büyük bir döküm için istemciyi sunucuyla aynı makinede çalıştırın ve tek bir satır çok büyükse max_allowed_packet değerini artırın.
IntoSQL Pro, dosyayı masaüstü uygulamasından veya komut satırından doğrudan MariaDB veritabanına yükler; betik yazmanız gerekmez.
En iyi sonuç için SQL Server dökümü nasıl alınır
Dönüştürücü, dökümün içerdiğini okur. Bu seçenekler verilerinizin daha fazlasını dökümde tutar:
- SSMS'te veritabanına sağ tıklayın, Tasks, Generate Scripts'i seçin ve tabloları işaretleyin. dbatools, mssql-scripter ve aynı kitaplık üzerine kurulu diğer araçlar aynı betiği yazar.
- Advanced altında Types of data to script ayarını Schema and data yapın. Yalnızca şemayı içeren bir betikte tablolar satırsızdır.
- Betiği SSMS'in varsayılanı olan Unicode ya da UTF-8 olarak kaydedin: ikisi de aynı şekilde okunur, gzip de çalışır.
Neler dönüştürülmez
Görünümler, fonksiyonlar, saklı yordamlar, tetikleyiciler, eş anlamlılar, kurallar ve güvenlik ilkeleri T-SQL ile yazılır. Raporda adlarıyla listelenirler, asla sessizce atlanmazlar; böylece onları MariaDB için yeniden yazabilirsiniz.
SQL Server - MariaDB dönüştürme hakkında sorular
Yanıtınızı bulamadınız mı? İletişim sayfasından bize yazın, bir kişi yanıt verir. İletişim sayfası
Dökümüm yükleniyor mu?
Hayır. Dönüştürücü tarayıcınızda çalışır ve dökümü diskinizden parça parça okur; böylece döküm bilgisayarınızdan hiç çıkmaz. Masaüstü uygulaması ve komut satırı da bilgisayarınızda dönüştürür.
Döküm ne kadar büyük olabilir?
Dönüştürücü dökümün tamamını asla bellekte tutmaz: dosyayı aralıklar halinde iki kez okur ve betiği ilerledikçe yazar. Birkaç gigabaytlık dökümler tarayıcıda, masaüstü uygulamasında ve komut satırıyla dönüştürülür.
SSMS'in kaydettiği UTF-16 dosyasını okuyor mu?
Evet. SSMS betikleri varsayılan olarak UTF-16 kaydeder ve dönüştürücü, gzip'li olsun olmasın, toplu işler arasında GO bulunan UTF-16 ve UTF-8 dosyalarını aynı şekilde okur.
Betik hangi SQL Server sürümlerinden gelebilir?
SSMS, dbatools veya mssql-scripter ile SQL Server 2017 ve sonrasından yazılmış betikler. Her test betiği SQL Server 2017, 2022 ve 2025'ten gelir ve kaynağıyla hücre hücre karşılaştırılır.
IDENTITY değerleri korunuyor mu?
Evet, tablo başına bir sütun için: birincil anahtarın başındaki IDENTITY sütunu AUTO_INCREMENT olur ve en yüksek id'den sonra devam eder. Sequence'lar aynı seçeneklerle MariaDB sequence'ı olur.
money, datetimeoffset ve diğer SQL Server türleri ne olur?
bit tinyint(1), money decimal(19,4), uniqueidentifier UUID, datetimeoffset ise UTC'de datetime olur. Zamansal tablolar sistem sürümlemesini korur. Büyük/küçük harfi yok sayan sütunlar tam karşılaştırır ve rapor hangileri olduğunu söyler.
Saklı yordamlar, tetikleyiciler ve görünümler ne olur?
Raporda adlarıyla listelenirler ve dönüştürülmezler, çünkü her veritabanı onları kendi dilinde yazar.
Betik hangi MariaDB sürümlerinde yüklenir?
MariaDB 10.11 ve sonrası. Her test betiği 10.11 ve 11.4 üzerinde yüklenir ve bir sorun çıkarsa ilk hatada durur.