SQL Server betiğini daha eski veya daha yeni bir SQL Server sürümüne taşıyın
SSMS'in Generate Scripts aracının şema ve veriyle yazdığı betiği .sql ya da .sql.gz, UTF-16 veya UTF-8 olarak bırakın ve hangi sürüm yazmış olursa olsun SQL Server 2017 ile 2025 arasında yüklenen bir betik indirin. Identity'ler, collation'lar ve xml ile hierarchyid gibi türler olduğu gibi kalır ve her değişiklik raporda listelenir.
18 satır dönüştürüldü, 1 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ır
11 sütun id int not null customer_id int not null status nvarchar(10) not null total decimal(19,4) not null items tinyint not null ordered_at datetime2(0) not null shipped_at datetime2(7) note nvarchar(max) details nvarchar(max) order_ref uniqueidentifier not null total_with_tax decimal(12,2) customers8 satır1
8 sütun id int not null name nvarchar(100) not null email nvarchar(200) not null country nchar(2) not null is_active bit not null signed_up date created_at datetimeoffset(0) not null row_version binary(8)
Dönüştürülmedi
- Görünüm paid_orders
- Tetikleyici orders_no_negative
Her veritabanı bunları kendi dilinde yazar. Bunları SQL Server için yeniden yazın.
-- 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
Düzeltmeler
- 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 binary(8) olur ve boş kalır.
Kontrol edilmeli
- 2 görünüm, tetikleyici, rutin veya olay dönüştürülmedi; rapor her birini listeliyor. Bunları SQL Server'de elle yeniden oluşturun.
- orders üzerindeki check1 CHECK kısıtı SQL Server 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 SQL Server için yazılamayan bir ifade kullanıyor (an index on 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:
Dosya ile betik 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
bit
Aynı tür.
char(n), varchar(n), nchar(n), nvarchar(n), varchar(max), text, ntext
her sütunun harmanlamasıyla nchar(n), nvarchar(n) ve nvarchar(max)
nvarchar, bir varchar sütununun kod sayfası ne olursa olsun her karakteri tutar. SQL Server 2017'de olmayan UTF-8 harmanlamaları Unicode karşılıklarına dönüşür.
column collations
her sütunda aynı harmanlama
Sütunlar eskisi gibi karşılaştırır ve sıralar, benzersiz anahtarlar aynı satırları ayrı tutar.
decimal(p,s), money, smallmoney
decimal(p,s); money decimal(19,4) olarak
Her basamak korunur, money dört ondalığıyla.
datetime, datetime2, smalldatetime
datetime2(p)
datetime2, 1. yıldan itibaren her datetime ve smalldatetime değerini aynı hassasiyetle tutar.
datetimeoffset
her değerin farkıyla datetimeoffset
Aynı tür ve değerler.
time
time(p)
Aynı tür.
dates that aren't valid
NULL
Tarih olmayan bir değer NULL olur ve rapor onu sayar.
Rapor satırı: date_out_of_range
json (SQL Server 2025)
nvarchar(max)
Aynı JSON değerleri; SQL Server'ın JSON fonksiyonları bunları okur.
uniqueidentifier
uniqueidentifier
Aynı tür.
binary, varbinary, image
binary(n), varbinary(n) ve varbinary(max)
Baytlar bayt olarak kalır.
xml, sql_variant, hierarchyid, geometry, geography
aynı türler
SQL Server'ın kendi türleri korunur; sql_variant değerleri metinlerini korur, bu yüzden temel türleri nvarchar olur.
rowversion, timestamp
binary(8), boş
Bir rowversion sütunu kopyalanan satırları alamaz ve SSMS bunun için değer yazmaz; gerekiyorsa yüklemeden sonra yeniden ekleyin.
Rapor satırı: rowversion_empty
IDENTITY
en yüksek id'den sonra devam eden IDENTITY
Kopyalanan id'ler IDENTITY_INSERT ile yüklenir ve sayaç en yüksek id'den sonra devam eder.
CREATE SEQUENCE
aynı seçeneklerle CREATE SEQUENCE
SQL Server 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
kaynaktaki gibi PERSISTED, aynı hesaplanan sütunlar
Aynı formüller, hedef tarafından hesaplanır.
computed columns with functions IntoSQL doesn't write
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 IntoSQL doesn't write, 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 IntoSQL doesn't write
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
veriden sonra WITH NOCHECK, ardından yetim satırlar için uyarıyla denetlenir
Anahtar satırlardan sonra oluşturulur ve en son denetlenir; üst satırı olmayan satırlar varsa yüklemeyi durdurmak yerine anahtar bir uyarıyla denetlenmemiş kalır.
ON DELETE or ON UPDATE that cascades in a cycle or along a second path
NO ACTION
SQL Server bu kademeli işlemleri reddeder, bu yüzden bir döküm bunları hiç içermez; bu satır elle düzenlenmiş betikler içindir.
Rapor satırı: foreign_key_action_dropped
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 SQL Server'da yeniden bölümleyin.
Rapor satırı: partitions_dropped
temporal tables (SYSTEM_VERSIONING)
iki tablo: mevcut satırlar ve geçmiş
Tablo ve geçmiş tablosu düz tablolar olarak kopyalanır; bunları bağlamak için SYSTEM_VERSIONING'i yeniden açın.
Rapor satırı: system_versioning_dropped
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
IntoSQL tabloları ve satırlarını dönüştürür; geri kalanı özgün betikten yeniden oluşturmanız için listelenir.
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
nvarchar(max)
Metin her değeri tutar; yüklemeden sonra türü değiştirin.
Rapor satırı: unknown_type
NUL characters in text
korunur
nvarchar bir NUL karakteri tutabilir, bu yüzden değer olduğu gibi 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
| Dosyada | Betikte | Rapor satırı |
|---|---|---|
| bit | bitAynı tür. | |
| char(n), varchar(n), nchar(n), nvarchar(n), varchar(max), text, ntext | her sütunun harmanlamasıyla nchar(n), nvarchar(n) ve nvarchar(max)nvarchar, bir varchar sütununun kod sayfası ne olursa olsun her karakteri tutar. SQL Server 2017'de olmayan UTF-8 harmanlamaları Unicode karşılıklarına dönüşür. | |
| column collations | her sütunda aynı harmanlamaSütunlar eskisi gibi karşılaştırır ve sıralar, benzersiz anahtarlar aynı satırları ayrı tutar. | |
| decimal(p,s), money, smallmoney | decimal(p,s); money decimal(19,4) olarakHer basamak korunur, money dört ondalığıyla. | |
| datetime, datetime2, smalldatetime | datetime2(p)datetime2, 1. yıldan itibaren her datetime ve smalldatetime değerini aynı hassasiyetle tutar. | |
| datetimeoffset | her değerin farkıyla datetimeoffsetAynı tür ve değerler. | |
| time | time(p)Aynı tür. | |
| dates that aren't valid | NULLTarih olmayan bir değer NULL olur ve rapor onu sayar. | date_out_of_range |
| json (SQL Server 2025) | nvarchar(max)Aynı JSON değerleri; SQL Server'ın JSON fonksiyonları bunları okur. | |
| uniqueidentifier | uniqueidentifierAynı tür. | |
| binary, varbinary, image | binary(n), varbinary(n) ve varbinary(max)Baytlar bayt olarak kalır. | |
| xml, sql_variant, hierarchyid, geometry, geography | aynı türlerSQL Server'ın kendi türleri korunur; sql_variant değerleri metinlerini korur, bu yüzden temel türleri nvarchar olur. | |
| rowversion, timestamp | binary(8), boşBir rowversion sütunu kopyalanan satırları alamaz ve SSMS bunun için değer yazmaz; gerekiyorsa yüklemeden sonra yeniden ekleyin. | rowversion_empty |
| IDENTITY | en yüksek id'den sonra devam eden IDENTITYKopyalanan id'ler IDENTITY_INSERT ile yüklenir ve sayaç en yüksek id'den sonra devam eder. | |
| CREATE SEQUENCE | aynı seçeneklerle CREATE SEQUENCESQL Server 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 | kaynaktaki gibi PERSISTED, aynı hesaplanan sütunlarAynı formüller, hedef tarafından hesaplanır. | |
| computed columns with functions IntoSQL doesn't write | 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 IntoSQL doesn't write, 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 IntoSQL doesn't write | 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 | veriden sonra WITH NOCHECK, ardından yetim satırlar için uyarıyla denetlenirAnahtar satırlardan sonra oluşturulur ve en son denetlenir; üst satırı olmayan satırlar varsa yüklemeyi durdurmak yerine anahtar bir uyarıyla denetlenmemiş kalır. | |
| ON DELETE or ON UPDATE that cascades in a cycle or along a second path | NO ACTIONSQL Server bu kademeli işlemleri reddeder, bu yüzden bir döküm bunları hiç içermez; bu satır elle düzenlenmiş betikler içindir. | foreign_key_action_dropped |
| 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 SQL Server'da yeniden bölümleyin. | partitions_dropped |
| temporal tables (SYSTEM_VERSIONING) | iki tablo: mevcut satırlar ve geçmişTablo ve geçmiş tablosu düz tablolar olarak kopyalanır; bunları bağlamak için SYSTEM_VERSIONING'i yeniden açın. | system_versioning_dropped |
| 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 listelenirIntoSQL tabloları ve satırlarını dönüştürür; geri kalanı özgün betikten yeniden oluşturmanız için listelenir. | 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 | nvarchar(max)Metin her değeri tutar; yüklemeden sonra türü değiştirin. | unknown_type |
| NUL characters in text | korunurnvarchar bir NUL karakteri tutabilir, bu yüzden değer olduğu gibi 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 SQL Server 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.
sqlcmd -b -f 65001 -S localhost -d mydb -i sql_server.sql_server.sqlYabancı anahtarlar WITH NOCHECK ile eklenir ve ardından denetlenir. Bir satır var olmayan bir satıra işaret ediyorsa betik, yarı yolda başarısız olmak yerine hangi kısıt olduğunu söyler ve onu denetlenmemiş bırakır.
Büyük bir döküm için sqlcmd'yi sunucuyla aynı makinede çalıştırın. En fazla 1000 satırlık her toplu iş kendi başına işlenir; böylece işlem günlüğü küçük kalır.
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
SQL Server kendi dilinde yazılmış görünümler, tetikleyiciler, yordamlar, fonksiyonlar ve diğer nesneler raporda adlarıyla listelenir, asla sessizce atlanmaz; böylece yeniden oluşturmadan önce her birini yüklediğiniz SQL Server sürümüyle karşılaştırabilirsiniz.
SQL Server sürümleri arasında taşıma 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. IDENTITY sütunları IDENTITY_INSERT ile yüklenir, her satır kendi id'sini korur ve sayaç en yüksek id'den sonra devam eder. Sequence'lar aynı seçeneklerle oluşturulur.
money, datetimeoffset ve diğer SQL Server türleri ne olur?
Olduğu gibi kalırlar, xml, sql_variant, hierarchyid, geometry ve geography dahil; her metin sütunu harmanlamasını korur. datetimeoffset değerleri farklarını korur. rowversion sütunları binary(8) olur, çünkü betikte bunlar için değer yoktur.
Saklı yordamlar, tetikleyiciler ve görünümler ne olur?
Raporda adlarıyla listelenirler ve dönüştürülmezler; böylece tablolar yüklendikten sonra özgün betiğin onlarla ilgili kısmını çalıştırabilirsiniz.
Betik hangi SQL Server sürümlerinde yüklenir?
Betiği hangi sürüm yazmış olursa olsun SQL Server 2017 ile 2025 arası. Aynı betik her birinde yüklenir ve bir sorun çıkarsa ilk hatada durur.