Langsung ke konten
Beranda IntoSQL

Pindahkan skrip SQL Server ke SQL Server versi lebih lama atau lebih baru

Letakkan skrip yang ditulis Generate Scripts di SSMS dengan schema dan data, sebagai .sql atau .sql.gz, UTF-16 atau UTF-8, lalu unduh skrip yang dimuat di SQL Server 2017 sampai 2025, versi mana pun yang menulisnya. Identity, collation, dan tipe seperti xml dan hierarchyid tetap apa adanya, dan setiap perubahan dicantumkan di laporan.

File Anda
sqlshop_2024_sqlserver.sqlFile contoh, 11 kB
Database Anda

18 baris dikonversi, 1 perbaikan, tidak ada yang ditolak

Tampilkan

Tabel di shop_2024_sqlserver.sqlDump SQL Server · ditulis oleh SQL Server Management Objects · utf-8

  • orders10 baris
    11 kolom
    idint not null
    customer_idint not null
    statusnvarchar(10) not null
    totaldecimal(19,4) not null
    itemstinyint not null
    ordered_atdatetime2(0) not null
    shipped_atdatetime2(7)
    notenvarchar(max)
    detailsnvarchar(max)
    order_refuniqueidentifier not null
    total_with_taxdecimal(12,2)
  • customers8 baris1
    8 kolom
    idint not null
    namenvarchar(100) not null
    emailnvarchar(200) not null
    countrynchar(2) not null
    is_activebit not null
    signed_update
    created_atdatetimeoffset(0) not null
    row_versionbinary(8)

Tidak dikonversi

  • View paid_orders
  • Trigger orders_no_negative

Setiap database menulis objek ini dalam bahasanya sendiri. Tulis ulang untuk SQL Server.

-- Written by IntoSQL from a SQL Server dump. Load it with: sqlcmd -b -f 65001 -d <database> -i <file>
SET NOCOUNT ON;
SET ANSI_NULLS ON;
SET QUOTED_IDENTIFIER ON;
SET ANSI_PADDING ON;
SET ANSI_WARNINGS ON;
SET ARITHABORT ON;
SET CONCAT_NULL_YIELDS_NULL ON;
SET NUMERIC_ROUNDABORT OFF;
GO

CREATE TABLE [dbo].[orders] (
    [id] int IDENTITY(1, 1) NOT NULL,
    [customer_id] int NOT NULL,
    [status] nvarchar(10) COLLATE SQL_Latin1_General_CP1_CI_AS DEFAULT N'pending' NOT NULL,
    [total] decimal(19,4) NOT NULL,
    [items] tinyint DEFAULT 1 NOT NULL,
    [ordered_at] datetime2(0) NOT NULL,
    [shipped_at] datetime2(7) NULL,
    [note] nvarchar(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [details] nvarchar(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [order_ref] uniqueidentifier DEFAULT (NEWID()) NOT NULL,
    [total_with_tax] AS CAST((CAST([total] * (1.16) AS decimal(12,2))) AS decimal(12,2)) PERSISTED,
    CONSTRAINT [check2] CHECK ([status] = N'cancelled' OR [status] = N'shipped' OR [status] = N'paid' OR [status] = N'pending'),
    CONSTRAINT [check3] CHECK ([total] >= (0)),
    CONSTRAINT [PK_orders] PRIMARY KEY ([id])
);
GO

CREATE TABLE [dbo].[customers] (
    [id] int IDENTITY(1, 1) NOT NULL,
    [name] nvarchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [email] nvarchar(200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [country] nchar(2) COLLATE SQL_Latin1_General_CP1_CI_AS DEFAULT N'US' NOT NULL,
    [is_active] bit DEFAULT 1 NOT NULL,
    [signed_up] date NULL,
    [created_at] datetimeoffset(0) DEFAULT SYSDATETIMEOFFSET() NOT NULL,
    [row_version] binary(8) NULL,
    CONSTRAINT [PK_customers] PRIMARY KEY ([id])
);
GO

SET IDENTITY_INSERT [dbo].[customers] ON;
INSERT INTO [dbo].[customers] ([id], [name], [email], [country], [is_active], [signed_up], [created_at]) VALUES
(1,N'Ana Martínez',N'ana@example.com',N'MX',1,'2023-01-15','2023-01-15T04:24:00.0000000-06:00');
SET IDENTITY_INSERT [dbo].[customers] OFF;
GO
SET IDENTITY_INSERT [dbo].[customers] ON;
INSERT INTO [dbo].[customers] ([id], [name], [email], [country], [is_active], [signed_up], [created_at]) VALUES
(2,N'Zoë Müller',N'zoe@example.de',N'DE',1,'2023-02-03','2023-02-03T09:11:42.0000000+01:00');
SET IDENTITY_INSERT [dbo].[customers] OFF;
GO
SET IDENTITY_INSERT [dbo].[customers] ON;
INSERT INTO [dbo].[customers] ([id], [name], [email], [country], [is_active], [signed_up], [created_at]) VALUES
(3,N'José Peña',N'jose@example.es',N'ES',0,'2023-03-21','2023-03-21T20:05:17.0000000+01:00');
SET IDENTITY_INSERT [dbo].[customers] OFF;
GO
SET IDENTITY_INSERT [dbo].[customers] ON;
INSERT INTO [dbo].[customers] ([id], [name], [email], [country], [is_active], [signed_up], [created_at]) VALUES
(4,N'李雷',N'lilei@example.cn',N'CN',1,'2023-05-09','2023-05-09T10:40:00.0000000+08:00');
SET IDENTITY_INSERT [dbo].[customers] OFF;
GO
SET IDENTITY_INSERT [dbo].[customers] ON;
INSERT INTO [dbo].[customers] ([id], [name], [email], [country], [is_active], [signed_up], [created_at]) VALUES
(5,N'Noah O''Brien',N'noah@example.ie',N'IE',1,NULL,'2023-06-30T15:00:00.0000000+01:00');
SET IDENTITY_INSERT [dbo].[customers] OFF;
GO
SET IDENTITY_INSERT [dbo].[customers] ON;
INSERT INTO [dbo].[customers] ([id], [name], [email], [country], [is_active], [signed_up], [created_at]) VALUES
(6,N'Amélie Laurent',N'amelie@example.fr',N'FR',1,'2024-01-02','2024-01-02T10:30:00.0000000+01:00');
SET IDENTITY_INSERT [dbo].[customers] OFF;
GO
SET IDENTITY_INSERT [dbo].[customers] ON;
INSERT INTO [dbo].[customers] ([id], [name], [email], [country], [is_active], [signed_up], [created_at]) VALUES
(7,N'Ravi Patel',N'ravi@example.in',N'IN',0,'2024-02-29','2024-03-01T05:29:59.0000000+05:30');
SET IDENTITY_INSERT [dbo].[customers] OFF;
GO
SET IDENTITY_INSERT [dbo].[customers] ON;
INSERT INTO [dbo].[customers] ([id], [name], [email], [country], [is_active], [signed_up], [created_at]) VALUES
(8,N'Sofia Rossi 🌻',N'sofia@example.it',N'IT',1,'2024-04-12','2024-04-12T14:12:12.0000000+02:00');
SET IDENTITY_INSERT [dbo].[customers] OFF;
GO
SET IDENTITY_INSERT [dbo].[orders] ON;
INSERT INTO [dbo].[orders] ([id], [customer_id], [status], [total], [items], [ordered_at], [shipped_at], [note], [details], [order_ref]) VALUES
(1,1,N'shipped',129.9000,3,'2024-03-01T10:00:00.0000000','2024-03-02T16:30:00.1234567',NULL,N'{"gift": false}',N'0b7a4c2e-3f1d-4e8a-9c55-1a2b3c4d5e6f');
SET IDENTITY_INSERT [dbo].[orders] OFF;
GO
SET IDENTITY_INSERT [dbo].[orders] ON;
INSERT INTO [dbo].[orders] ([id], [customer_id], [status], [total], [items], [ordered_at], [shipped_at], [note], [details], [order_ref]) VALUES
(2,2,N'paid',54.0000,1,'2024-03-02T11:15:00.0000000',NULL,N'Gift wrap 🎁',N'{"gift": true, "wrap": "red"}',N'1c8b5d3f-4a2e-4f9b-8d66-2b3c4d5e6f70');
SET IDENTITY_INSERT [dbo].[orders] OFF;
GO
SET IDENTITY_INSERT [dbo].[orders] ON;
INSERT INTO [dbo].[orders] ([id], [customer_id], [status], [total], [items], [ordered_at], [shipped_at], [note], [details], [order_ref]) VALUES
(3,1,N'cancelled',12.5000,1,'2024-03-03T09:45:00.0000000',NULL,N'Customer changed their mind',NULL,N'2d9c6e4a-5b3f-4a0c-9e77-3c4d5e6f7081');
SET IDENTITY_INSERT [dbo].[orders] OFF;
GO
SET IDENTITY_INSERT [dbo].[orders] ON;
INSERT INTO [dbo].[orders] ([id], [customer_id], [status], [total], [items], [ordered_at], [shipped_at], [note], [details], [order_ref]) VALUES
(4,4,N'shipped',980.0000,12,'2024-03-05T02:10:00.0000000','2024-03-07T08:00:00.0000000',N'请小心轻放',N'{"fragile": true}',N'3e0d7f5b-6c4a-4b1d-8f88-4d5e6f708192');
SET IDENTITY_INSERT [dbo].[orders] OFF;
GO
SET IDENTITY_INSERT [dbo].[orders] ON;
INSERT INTO [dbo].[orders] ([id], [customer_id], [status], [total], [items], [ordered_at], [shipped_at], [note], [details], [order_ref]) VALUES
(5,5,N'pending',45.7500,2,'2024-03-08T17:20:00.0000000',NULL,N'Leave at the door; ring twice',NULL,N'4f1e806c-7d5b-4c2e-9a99-5e6f708192a3');
SET IDENTITY_INSERT [dbo].[orders] OFF;
GO
SET IDENTITY_INSERT [dbo].[orders] ON;
INSERT INTO [dbo].[orders] ([id], [customer_id], [status], [total], [items], [ordered_at], [shipped_at], [note], [details], [order_ref]) VALUES
(6,6,N'shipped',310.4000,5,'2024-03-10T13:00:00.0000000','2024-03-11T09:00:00.0000000',N'Fragile: "glass"',N'{"fragile": true}',N'50f2917d-8e6c-4d3f-8baa-6f708192a3b4');
SET IDENTITY_INSERT [dbo].[orders] OFF;
GO
SET IDENTITY_INSERT [dbo].[orders] ON;
INSERT INTO [dbo].[orders] ([id], [customer_id], [status], [total], [items], [ordered_at], [shipped_at], [note], [details], [order_ref]) VALUES
(7,8,N'paid',76.2000,2,'2024-03-11T18:45:00.0000000',NULL,NULL,NULL,N'6103a28e-9f7d-4e40-9cbb-708192a3b4c5');
SET IDENTITY_INSERT [dbo].[orders] OFF;
GO
SET IDENTITY_INSERT [dbo].[orders] ON;
INSERT INTO [dbo].[orders] ([id], [customer_id], [status], [total], [items], [ordered_at], [shipped_at], [note], [details], [order_ref]) VALUES
(8,2,N'shipped',19.9900,1,'2024-03-12T08:00:00.0000000','9999-12-31T23:59:59.9999999',N'Shipped date set to the maximum by an old import',NULL,N'7214b39f-a08e-4f51-8dcc-8192a3b4c5d6');
SET IDENTITY_INSERT [dbo].[orders] OFF;
GO
SET IDENTITY_INSERT [dbo].[orders] ON;
INSERT INTO [dbo].[orders] ([id], [customer_id], [status], [total], [items], [ordered_at], [shipped_at], [note], [details], [order_ref]) VALUES
(9,3,N'shipped',64.0000,2,'2024-03-14T15:30:00.0000000','2024-03-15T10:00:00.0000000',N'Two parcels',N'{"parcels": [1, 2]}',N'8325c4a0-b19f-4062-9edd-92a3b4c5d6e7');
SET IDENTITY_INSERT [dbo].[orders] OFF;
GO
SET IDENTITY_INSERT [dbo].[orders] ON;
INSERT INTO [dbo].[orders] ([id], [customer_id], [status], [total], [items], [ordered_at], [shipped_at], [note], [details], [order_ref]) VALUES
(10,7,N'paid',1499.0000,1,'2024-03-15T21:05:00.0000000',NULL,N'C:\Users\ravi\invoice.pdf',NULL,N'9436d5b1-c2a0-4173-8fee-a3b4c5d6e7f8');
SET IDENTITY_INSERT [dbo].[orders] OFF;
GO

-- Indexes, foreign keys, counters and triggers, after the rows.
CREATE INDEX [idx_orders_customer] ON [dbo].[orders] ([customer_id]);
CREATE INDEX [idx_orders_status_date] ON [dbo].[orders] ([status], [ordered_at]);
CREATE UNIQUE INDEX [email] ON [dbo].[customers] ([email]);
ALTER TABLE [dbo].[orders] WITH NOCHECK ADD CONSTRAINT [FK_orders] FOREIGN KEY ([customer_id]) REFERENCES [dbo].[customers] ([id]);
BEGIN TRY ALTER TABLE [dbo].[orders] WITH CHECK CHECK CONSTRAINT [FK_orders]; END TRY BEGIN CATCH PRINT N'Foreign key ' + N'[FK_orders]' + N' has rows without a parent: it stays unchecked, and new rows are checked.'; END CATCH;
DECLARE @next decimal(38,0) = (SELECT MAX([id]) FROM [dbo].[orders]); IF @next IS NOT NULL BEGIN IF @next < 0 SET @next = 0; DBCC CHECKIDENT (N'[dbo].[orders]', RESEED, @next) WITH NO_INFOMSGS; END;
GO
DECLARE @next decimal(38,0) = (SELECT MAX([id]) FROM [dbo].[customers]); IF @next IS NOT NULL BEGIN IF @next < 0 SET @next = 0; DBCC CHECKIDENT (N'[dbo].[customers]', RESEED, @next) WITH NO_INFOMSGS; END;
GO
EXEC sys.sp_addextendedproperty @name = N'MS_Description', @value = N'People who bought at least once', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'customers';
GO

Perbaikan

  1. "row_version" dari customers adalah versi baris yang diatur SQL Server sendiri; dump tidak berisi nilainya, jadi menjadi binary(8) dan kosong.

Perlu diperiksa

  • 2 view, trigger, rutin, atau event tidak dikonversi; laporan mencantumkan masing-masing. Buat ulang secara manual di SQL Server.
  • CHECK check1 pada orders tidak bisa ditulis untuk SQL Server (function isjson), jadi tidak dibuat. Tulis CHECK secara manual jika penting.
  • Indeks idx_orders_pending pada orders memakai ekspresi yang tidak bisa ditulis untuk SQL Server (an index on an expression), jadi tidak dibuat. Buat indeks secara manual jika kueri memerlukannya.

File Anda dikonversi di komputer ini dan tidak pernah diunggah.

Contoh lain:

Apa yang berubah antara file dan skrip

Setiap baris adalah aturan yang diterapkan konverter, beserta baris laporan yang ditulisnya saat aturan itu mengubah sesuatu di data Anda.

  • bit

    bit

    Tipe yang sama.

  • char(n), varchar(n), nchar(n), nvarchar(n), varchar(max), text, ntext

    nchar(n), nvarchar(n), dan nvarchar(max), dengan collation setiap kolom

    nvarchar memuat setiap karakter, apa pun code page kolom varchar sebelumnya. Collation UTF-8, yang tidak ada di SQL Server 2017, menjadi pasangan Unicode-nya.

  • column collations

    collation yang sama di setiap kolom

    Kolom dibandingkan dan diurutkan seperti sebelumnya, dan unique key membedakan baris yang sama.

  • decimal(p,s), money, smallmoney

    decimal(p,s); money sebagai decimal(19,4)

    Setiap digit dipertahankan, money dengan empat desimalnya.

  • datetime, datetime2, smalldatetime

    datetime2(p)

    datetime2 memuat setiap nilai datetime dan smalldatetime, sejak tahun 1, dengan presisi yang sama.

  • datetimeoffset

    datetimeoffset, dengan offset setiap nilai

    Tipe dan nilai yang sama.

  • time

    time(p)

    Tipe yang sama.

  • dates that aren't valid

    NULL

    Nilai yang bukan tanggal menjadi NULL dan laporan menghitungnya.

    Baris laporan: date_out_of_range

  • json (SQL Server 2025)

    nvarchar(max)

    Nilai JSON yang sama, yang dibaca fungsi JSON di SQL Server.

  • uniqueidentifier

    uniqueidentifier

    Tipe yang sama.

  • binary, varbinary, image

    binary(n), varbinary(n), dan varbinary(max)

    Byte tetap byte.

  • xml, sql_variant, hierarchyid, geometry, geography

    tipe yang sama

    Tipe milik SQL Server dipertahankan; nilai sql_variant mempertahankan teksnya, jadi tipe dasarnya menjadi nvarchar.

  • rowversion, timestamp

    binary(8), kosong

    Kolom rowversion tidak bisa menerima baris yang disalin, dan SSMS tidak menulis nilainya; tambahkan lagi setelah pemuatan jika Anda membutuhkannya.

    Baris laporan: rowversion_empty

  • IDENTITY

    IDENTITY, berlanjut setelah id tertinggi

    Id yang disalin dimuat dengan IDENTITY_INSERT, dan penghitung berlanjut setelah id tertinggi.

  • CREATE SEQUENCE

    CREATE SEQUENCE dengan opsi yang sama

    Sequence SQL Server bekerja dengan cara yang sama. SSMS tidak menulis posisi yang sudah dicapai sequence, jadi sequence mulai dari titik saat dibuat.

  • computed columns

    kolom terhitung yang sama, PERSISTED seperti di sumber

    Rumus yang sama, dihitung oleh database tujuan.

  • computed columns with functions IntoSQL doesn't write

    kolom biasa

    Rumus yang tidak bisa ditulis menyisakan kolom biasa dan satu baris laporan; SSMS tidak menulis nilai untuk kolom terhitung.

    Baris laporan: generated_not_translated

  • defaults with functions IntoSQL doesn't write, and NEXT VALUE FOR

    tanpa default

    Default yang tidak bisa ditulis dihilangkan dan dilaporkan.

    Baris laporan: default_not_translated

  • CHECK constraints

    diterjemahkan

    CHECK yang sama, diuji saat setiap baris dimuat.

  • CHECK constraints with functions IntoSQL doesn't write

    tidak dibuat

    CHECK yang tidak bisa ditulis dihilangkan dan dilaporkan.

    Baris laporan: check_skipped

  • CHECK constraints added WITH NOCHECK or disabled

    tidak dibuat

    SQL Server tidak menerapkan CHECK ini, jadi baris bisa melanggarnya.

    Baris laporan: check_not_enforced

  • filtered and columnstore indexes

    tidak dibuat

    IntoSQL menulis indeks b-tree pada kolom utuh; buat ulang indeks lainnya setelah pemuatan.

    Baris laporan: index_skipped

  • foreign keys

    setelah data WITH NOCHECK, lalu diperiksa dengan peringatan untuk baris yatim

    Key dibuat setelah baris dan diperiksa terakhir; baris tanpa induk membuatnya tetap tidak diperiksa dengan peringatan, bukan menghentikan pemuatan.

  • ON DELETE or ON UPDATE that cascades in a cycle or along a second path

    NO ACTION

    SQL Server menolak cascade tersebut, jadi dump tidak pernah memuatnya; baris ini ada untuk skrip yang diedit manual.

    Baris laporan: foreign_key_action_dropped

  • foreign keys to tables the dump doesn't create

    tidak dibuat

    Key tidak bisa merujuk ke tabel yang tidak ada.

    Baris laporan: foreign_key_skipped

  • tables on a partition scheme

    satu tabel dengan baris dari setiap partisi

    Barisnya sama; partisi ulang tabel di SQL Server jika diperlukan.

    Baris laporan: partitions_dropped

  • temporal tables (SYSTEM_VERSIONING)

    dua tabel: baris saat ini dan riwayatnya

    Tabel dan tabel riwayatnya disalin sebagai tabel biasa; aktifkan lagi SYSTEM_VERSIONING untuk menghubungkannya.

    Baris laporan: system_versioning_dropped

  • NOT NULL columns with values that become NULL

    NOT NULL dihapus

    Kolom yang nilainya harus menjadi NULL tidak bisa mempertahankan NOT NULL, atau pemuatan akan berhenti.

    Baris laporan: not_null_relaxed

  • views, functions, procedures, triggers, synonyms, types and partition functions

    dicantumkan di laporan

    IntoSQL mengonversi tabel dan barisnya; sisanya dicantumkan agar Anda bisa membuatnya ulang dari skrip asli.

    Baris laporan: not_converted_objects

  • scripts without CREATE TABLE (data only)

    tipe dibaca dari nilai

    Skrip yang hanya berisi data hanya punya baris, jadi tipenya diambil dari nilai.

    Baris laporan: no_schema

  • expressions in INSERT values

    NULL

    Konverter yang tidak menjalankan database tidak bisa mengevaluasinya.

    Baris laporan: expression_value

  • types IntoSQL doesn't know

    nvarchar(max)

    Text memuat nilai apa pun; ubah tipenya setelah pemuatan.

    Baris laporan: unknown_type

  • NUL characters in text

    dipertahankan

    nvarchar bisa memuat karakter NUL, jadi nilainya disalin apa adanya.

  • text that isn't valid in its encoding

    byte yang rusak menjadi karakter pengganti

    Skripnya UTF-8 dan setiap nilai harus berupa teks yang valid.

    Baris laporan: invalid_utf8_replaced

  • text decoded twice (ñ)

    disalin apa adanya

    Skrip berisi persis karakter ini, jadi karakter itu disalin; laporan menunjukkannya.

    Baris laporan: mojibake_suspected

Di fileDi skripBaris laporan
bitbitTipe yang sama.
char(n), varchar(n), nchar(n), nvarchar(n), varchar(max), text, ntextnchar(n), nvarchar(n), dan nvarchar(max), dengan collation setiap kolomnvarchar memuat setiap karakter, apa pun code page kolom varchar sebelumnya. Collation UTF-8, yang tidak ada di SQL Server 2017, menjadi pasangan Unicode-nya.
column collationscollation yang sama di setiap kolomKolom dibandingkan dan diurutkan seperti sebelumnya, dan unique key membedakan baris yang sama.
decimal(p,s), money, smallmoneydecimal(p,s); money sebagai decimal(19,4)Setiap digit dipertahankan, money dengan empat desimalnya.
datetime, datetime2, smalldatetimedatetime2(p)datetime2 memuat setiap nilai datetime dan smalldatetime, sejak tahun 1, dengan presisi yang sama.
datetimeoffsetdatetimeoffset, dengan offset setiap nilaiTipe dan nilai yang sama.
timetime(p)Tipe yang sama.
dates that aren't validNULLNilai yang bukan tanggal menjadi NULL dan laporan menghitungnya.date_out_of_range
json (SQL Server 2025)nvarchar(max)Nilai JSON yang sama, yang dibaca fungsi JSON di SQL Server.
uniqueidentifieruniqueidentifierTipe yang sama.
binary, varbinary, imagebinary(n), varbinary(n), dan varbinary(max)Byte tetap byte.
xml, sql_variant, hierarchyid, geometry, geographytipe yang samaTipe milik SQL Server dipertahankan; nilai sql_variant mempertahankan teksnya, jadi tipe dasarnya menjadi nvarchar.
rowversion, timestampbinary(8), kosongKolom rowversion tidak bisa menerima baris yang disalin, dan SSMS tidak menulis nilainya; tambahkan lagi setelah pemuatan jika Anda membutuhkannya.rowversion_empty
IDENTITYIDENTITY, berlanjut setelah id tertinggiId yang disalin dimuat dengan IDENTITY_INSERT, dan penghitung berlanjut setelah id tertinggi.
CREATE SEQUENCECREATE SEQUENCE dengan opsi yang samaSequence SQL Server bekerja dengan cara yang sama. SSMS tidak menulis posisi yang sudah dicapai sequence, jadi sequence mulai dari titik saat dibuat.
computed columnskolom terhitung yang sama, PERSISTED seperti di sumberRumus yang sama, dihitung oleh database tujuan.
computed columns with functions IntoSQL doesn't writekolom biasaRumus yang tidak bisa ditulis menyisakan kolom biasa dan satu baris laporan; SSMS tidak menulis nilai untuk kolom terhitung.generated_not_translated
defaults with functions IntoSQL doesn't write, and NEXT VALUE FORtanpa defaultDefault yang tidak bisa ditulis dihilangkan dan dilaporkan.default_not_translated
CHECK constraintsditerjemahkanCHECK yang sama, diuji saat setiap baris dimuat.
CHECK constraints with functions IntoSQL doesn't writetidak dibuatCHECK yang tidak bisa ditulis dihilangkan dan dilaporkan.check_skipped
CHECK constraints added WITH NOCHECK or disabledtidak dibuatSQL Server tidak menerapkan CHECK ini, jadi baris bisa melanggarnya.check_not_enforced
filtered and columnstore indexestidak dibuatIntoSQL menulis indeks b-tree pada kolom utuh; buat ulang indeks lainnya setelah pemuatan.index_skipped
foreign keyssetelah data WITH NOCHECK, lalu diperiksa dengan peringatan untuk baris yatimKey dibuat setelah baris dan diperiksa terakhir; baris tanpa induk membuatnya tetap tidak diperiksa dengan peringatan, bukan menghentikan pemuatan.
ON DELETE or ON UPDATE that cascades in a cycle or along a second pathNO ACTIONSQL Server menolak cascade tersebut, jadi dump tidak pernah memuatnya; baris ini ada untuk skrip yang diedit manual.foreign_key_action_dropped
foreign keys to tables the dump doesn't createtidak dibuatKey tidak bisa merujuk ke tabel yang tidak ada.foreign_key_skipped
tables on a partition schemesatu tabel dengan baris dari setiap partisiBarisnya sama; partisi ulang tabel di SQL Server jika diperlukan.partitions_dropped
temporal tables (SYSTEM_VERSIONING)dua tabel: baris saat ini dan riwayatnyaTabel dan tabel riwayatnya disalin sebagai tabel biasa; aktifkan lagi SYSTEM_VERSIONING untuk menghubungkannya.system_versioning_dropped
NOT NULL columns with values that become NULLNOT NULL dihapusKolom yang nilainya harus menjadi NULL tidak bisa mempertahankan NOT NULL, atau pemuatan akan berhenti.not_null_relaxed
views, functions, procedures, triggers, synonyms, types and partition functionsdicantumkan di laporanIntoSQL mengonversi tabel dan barisnya; sisanya dicantumkan agar Anda bisa membuatnya ulang dari skrip asli.not_converted_objects
scripts without CREATE TABLE (data only)tipe dibaca dari nilaiSkrip yang hanya berisi data hanya punya baris, jadi tipenya diambil dari nilai.no_schema
expressions in INSERT valuesNULLKonverter yang tidak menjalankan database tidak bisa mengevaluasinya.expression_value
types IntoSQL doesn't knownvarchar(max)Text memuat nilai apa pun; ubah tipenya setelah pemuatan.unknown_type
NUL characters in textdipertahankannvarchar bisa memuat karakter NUL, jadi nilainya disalin apa adanya.
text that isn't valid in its encodingbyte yang rusak menjadi karakter penggantiSkripnya UTF-8 dan setiap nilai harus berupa teks yang valid.invalid_utf8_replaced
text decoded twice (ñ)disalin apa adanyaSkrip berisi persis karakter ini, jadi karakter itu disalin; laporan menunjukkannya.mojibake_suspected

Muat skrip ke SQL Server

Skrip membuat tabel, menyalin baris, lalu menambahkan kunci, indeks, dan foreign key, jadi pemuatan berjalan cepat dan berhenti di galat pertama.

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

Foreign key ditambahkan WITH NOCHECK lalu diperiksa. Jika sebuah baris merujuk ke baris yang tidak ada, skrip menyebutkan constraint mana dan membiarkannya tidak diperiksa, bukan gagal di tengah jalan.

Untuk dump yang besar, jalankan sqlcmd di mesin yang sama dengan server. Setiap batch berisi maksimal 1000 baris di-commit sendiri, jadi log transaksi tetap kecil.

Buat dump SQL Server untuk hasil terbaik

Konverter membaca apa yang ada di dump. Opsi berikut membuat lebih banyak data Anda tetap ada di dalamnya:

  • Di SSMS, klik kanan database, Tasks, Generate Scripts, lalu pilih tabelnya. dbatools, mssql-scripter, dan alat lain yang dibangun di atas library yang sama menulis skrip yang sama.
  • Di Advanced, atur Types of data to script ke Schema and data. Skrip yang hanya berisi schema punya tabel tanpa baris.
  • Simpan sebagai Unicode, default SSMS, atau sebagai UTF-8: keduanya dibaca dengan cara yang sama, dan gzip juga bisa.

Yang tidak dikonversi

View, trigger, procedure, fungsi, dan objek lain yang ditulis dalam bahasa SQL Server sendiri dicantumkan di laporan berdasarkan nama, tidak pernah dibuang diam-diam, jadi Anda bisa memeriksa masing-masing dengan versi SQL Server tujuan pemuatan sebelum membuatnya ulang.

Pertanyaan tentang memindahkan SQL Server antarversi

Tidak terjawab di sini? Tulis ke kami dari halaman kontak, dan seseorang akan membalas. Halaman kontak

Apakah dump saya diunggah?

Tidak. Konverter berjalan di browser Anda dan membaca dump dari disk Anda sepotong demi sepotong, jadi dump tidak pernah meninggalkan komputer Anda. Aplikasi desktop dan command line juga mengonversi di komputer Anda.

Seberapa besar dump yang bisa dipakai?

Konverter tidak pernah menyimpan seluruh dump di memori: file dibaca dua kali, per rentang, dan skrip ditulis sambil berjalan. Dump berukuran beberapa gigabyte bisa dikonversi di browser, di aplikasi desktop, dan dengan command line.

Apakah file UTF-16 yang disimpan SSMS bisa dibaca?

Ya. SSMS menyimpan skrip sebagai UTF-16 secara default, dan konverter membaca UTF-16 dan UTF-8 sama baiknya, di-gzip atau tidak, dengan GO di antara batch.

Skrip dari versi SQL Server mana yang bisa dipakai?

Skrip yang ditulis SSMS, dbatools, atau mssql-scripter dari SQL Server 2017 ke atas. Setiap skrip uji berasal dari SQL Server 2017, 2022, dan 2025 dan dibandingkan dengan sumbernya sel demi sel.

Apakah nilai IDENTITY dipertahankan?

Ya. Kolom IDENTITY dimuat dengan IDENTITY_INSERT, setiap baris mempertahankan id-nya, dan penghitung berlanjut setelah id tertinggi. Sequence dibuat dengan opsi yang sama.

Apa yang terjadi pada money, datetimeoffset, dan tipe SQL Server lainnya?

Tetap apa adanya: termasuk xml, sql_variant, hierarchyid, geometry, dan geography, dan setiap kolom teks mempertahankan collation-nya. Nilai datetimeoffset mempertahankan offset-nya. Kolom rowversion menjadi binary(8), karena skrip tidak berisi nilainya.

Bagaimana dengan prosedur, trigger, dan view?

Semuanya dicantumkan di laporan berdasarkan nama dan tidak dikonversi, jadi Anda bisa menjalankan bagiannya dari skrip asli setelah tabel masuk.

Di versi SQL Server mana skrip bisa dimuat?

SQL Server 2017 sampai 2025, versi mana pun yang menulis skrip. Skrip yang sama dimuat di setiap versi itu, dan berhenti di galat pertama jika ada yang salah.