İçeriğe geç
IntoSQL ana sayfası

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.

Dosyanız
sqlshop_2024_sqlserver.sqlÖrnek dosya, 11 kB
Veritabanınız

18 satır dönüştürüldü, 3 düzeltme, reddedilen yok

Göster

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
    idint not null
    customer_idint not null
    statusvarchar(10) not null
    totaldecimal(19,4) not null
    itemstinyint unsigned not null
    ordered_atdatetime not null
    shipped_atdatetime(6)
    notetext
    detailstext
    order_refuuid not null
    total_with_taxdecimal(12,2)
  • customers8 satır2
    8 sütun
    idint not null
    namevarchar(100) not null
    emailvarchar(200) not null
    countrychar(2) not null
    is_activetinyint(1) not null
    signed_update
    created_atdatetime not null
    row_versionblob

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

  1. 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.
  2. 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.
  3. 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çindeMariaDB içindeRapor satırı
bittinyint(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), textchar(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, smallmoneydecimal(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, smalldatetimedatetime(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
datetimeoffsetUTC'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
timetime(p)Günün aynı saatleri.
dates before the year 1000NULLMariaDB 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.
uniqueidentifieruuidAynı tanımlayıcılar, küçük harfle yazılır.
binary, varbinary, imagebinary(n), varbinary(n) ve blob türleriBaytlar bayt olarak kalır.
geometry, geographySQL Server'ın kendi baytlarıyla blobSSMS uzamsal değerleri SQL Server'ın serileştirmesiyle yazar ve bu bayt bayt korunur.spatial_as_native
rowversion, timestampblob, 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, vectorlongtextMariaDB'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
IDENTITYen 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 keydü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 SEQUENCEaynı 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 lacksdü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 FORvarsayı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 lacksoluş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 disabledoluşturulmazSQL Server bu CHECK kısıtlarını uygulamaz, bu yüzden satırlar onları ihlal edebilir.check_not_enforced
filtered and columnstore indexesoluşturulmazIntoSQL tüm sütunlar üzerinde b-tree indeksler yazar; diğerlerini yüklemeden sonra yeniden oluşturun.index_skipped
foreign keysFOREIGN_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 createoluşturulmazBir anahtar, var olmayan bir tabloya başvuramaz.foreign_key_skipped
tables on a partition schemeher 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.
schemastek 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 NULLNOT 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 functionsraporda 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 valuesNULLVeritabanı çalıştırmayan bir dönüştürücü bunları hesaplayamaz.expression_value
types IntoSQL doesn't knowlongtextMetin her değeri tutar; yüklemeden sonra türü değiştirin.unknown_type
NUL characters in textkorunurDeğer, NUL karakteri kaçışlanarak kopyalanır.
text that isn't valid in its encodinghatalı 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.sql

Yabancı 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.