SQL Server'daki sunucular arasında tüm verileri geçirme adımları

Sayfa oluşturma tarihi :

çevre

SQL Server
  • SQL Server 2019
  • SQL Server 2012 (İngilizce)

Veri geçişi nasıl geçirilir ve her birinin avantajları ve dezavantajları

SQL Server veritabanı verilerini toplu olarak diğer sunuculardaki SQL Server'a geçirmenin birkaç yolu vardır: Her birinin geçiş sırasında avantajları ve dezavantajları vardır, bu nedenle ortamınıza en uygun yöntemi seçin.

Geçiş Yöntemi Sunucular arasındaki ağ bağlantısıGeçmiş sürümlere geçiş sırasında dosya boyutu tablo düzenlerinin önceden senkronize edilmiş kimlik doğrulaması
Veritabanlarını yedekleme ve geri yükleme Gerekli değil (dosyaları taşıma) kötü sıradan Gerekli değil (otomatik tam değiştirme) lüzumsuz
SQL olarak çıktı verileri Gerekli değil (dosyaları taşıma) Makbul büyük Gerekli veya tabloya silindi lüzumsuz
Verileri İçe ve Dışa Aktarma aracını kullanma vazgeçilmezlik Makbul sız Taşıma ayarlarınıza bağlı olarak gerek

önkoşul

  • SQL Server ve SQL Server Management Studio'nun her sunucuda yüklü olduğunu varsayalım.
  • Bu İpuçları, sql server sürümlerini farklı hale getirmeye cesaret eder.

Örnek veriler oluşturmaCreate sample data

Veri geçişini tartışırken, bunu veritabanında aşağıdaki tablo yapılandırmasıyla yaparsınız:

Veri taşıma kaynağı

SQL Server 2012 (İngilizce)

  • Tablo 1 (Sütun:Anahtar, Değer)
  • Tablo 2 (Sütun:Anahtar, Değer, Açıklamalar)
  • Tablo 3 (Sütun:Anahtar, Değer)

Aşağıda bir veritabanı oluşturma komut dosyası verilmiştir. Yolu zamanında değiştirin.

USE [master]
GO

CREATE DATABASE [SampleDatabase]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'SampleDatabase', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\SampleDatabase.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'SampleDatabase_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\SampleDatabase_log.ldf' , SIZE = 2048KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO

Aşağıda bir tablo oluşturma komut dosyası verilmiştir.

USE [SampleDatabase]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[テーブル1](
	[キー] [int] NOT NULL,
	[値] [nvarchar](50) NULL,
 CONSTRAINT [PK_テーブル1] PRIMARY KEY CLUSTERED 
(
	[キー] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[テーブル2](
	[キー] [int] NOT NULL,
	[値] [nvarchar](50) NULL,
	[備考] [nvarchar](50) NULL,
 CONSTRAINT [PK_テーブル2] PRIMARY KEY CLUSTERED 
(
	[キー] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[テーブル3](
	[キー] [int] NOT NULL,
	[値] [nvarchar](50) NULL,
 CONSTRAINT [PK_テーブル3] PRIMARY KEY CLUSTERED 
(
	[キー] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

Aşağıda ek bir kayıt komut dosyası verilmiştir:

USE [SampleDatabase]
GO
INSERT [dbo].[テーブル1] ([キー], [値]) VALUES (1, N'1aaa')
GO
INSERT [dbo].[テーブル1] ([キー], [値]) VALUES (2, N'1bbb')
GO
INSERT [dbo].[テーブル2] ([キー], [値], [備考]) VALUES (1, N'2aaa', N'2remarks')
GO
INSERT [dbo].[テーブル2] ([キー], [値], [備考]) VALUES (2, N'2bbb', N'2remarks')
GO
INSERT [dbo].[テーブル3] ([キー], [値]) VALUES (1, N'3aaa')
GO
INSERT [dbo].[テーブル3] ([キー], [値]) VALUES (2, N'3bbb')
GO

Veri taşıma

SQL Server 2019

  • Tablo 1 (Sütun:Anahtar, Değer)
  • Tablo 2 (Sütun:Anahtar, Değer)

Her tablodaki kayıtlar boştur.

Aşağıda bir veritabanı oluşturma komut dosyası verilmiştir. Yolu zamanında değiştirin.

USE [master]
GO

CREATE DATABASE [SampleDatabase]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'SampleDatabase', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\DATA\SampleDatabase.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
 LOG ON 
( NAME = N'SampleDatabase_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\DATA\SampleDatabase_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )
 WITH CATALOG_COLLATION = DATABASE_DEFAULT
GO

Aşağıda bir tablo oluşturma komut dosyası verilmiştir.

USE [SampleDatabase]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[テーブル1](
	[キー] [int] NOT NULL,
	[値] [nvarchar](50) NULL,
 CONSTRAINT [PK_テーブル1] PRIMARY KEY CLUSTERED 
(
	[キー] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[テーブル2](
	[キー] [int] NOT NULL,
	[値] [nvarchar](50) NULL,
 CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED 
(
	[キー] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO

Veritabanı yedekleme ve geri yükleme geçişi

Bu yöntem, tüm veritabanını kaynak sunucuda bir dosya olarak yedeklemek, hedef sunucuya kopyalamak ve almaktır. Bu nedenle, tüm tablo yapılandırmaları, tümü kaynakla aynı olan hedefe ayarlanır.

Ayrıca, bu yöntem SQL Server'ın daha yeni bir sürümünden eski bir sürüme geçmenize izin vermez. (Sürüm farkı küçükse, mümkün olabilir))

prosedür

SQL Server Management Studio'yu kaynaktan başlatın. SQL Server sürümünüzle eşleşen bir klasör seçin.

Hedef sunucuda oturum açın. SQL Server Management Studio kullanan bilgisayarlar diğer bilgisayarlarda iyidir, ancak bu İpuçları hepinizin kendi sunucularınızda çalışmasına olanak tanır.

Nesne Gezgini'nden veritabanına sağ tıklayın ve Görevler için Yedekle'yi seçin.

Sağ alt köşedeki yedekleme hedefleri listesinden ilk yedekleme yolunu silin.

Sildiğinizde, Ekle düğmesini tıklatın.

Yolu değiştir düğmesini tıklatın.

"Yedekle" klasörünün varsayılan olarak seçili olduğunu düşünüyorum, bu nedenle aşağıdaki dosya adına yedeklenecek dosya adını girin ve Tamam düğmesine tıklayın. Dosya adı isteğe bağlıdır, bu nedenle anlaşılmasını kolaylaştırın.

Tamam düğmesini tıklatın.

Listeye eklendiğini doğrulayın ve Tamam düğmesini tıklatın.

Yedekleme dosyası aşağıdaki klasörde oluşturulduğundan, bu dosyayı geçirmek istediğim sunucuya götüreceğim. Klasör yolu, SQL Server sürümüne ve örneğin adına bağlıdır, bu nedenle zamanında denetleyin.

C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup

Hedef sunucuya kopyaladıktan sonraki durum. SQL Server'ın Yedekleme klasörüne koyarsanız yüklenmesi daha kolay olduğu için aşağıdaki klasöre yerleştirilir. Bu aynı zamanda SQL Server sürümüne ve örnek adına da bağlıdır, bu nedenle lütfen zamanında kontrol edin.

C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\Backup

Geçiş yaptığınız sunucuda SQL Server Management Studio'yu başlatın. Sunucunuza buradan giriş yaptınız.

Nesne Gezgini'nden, hedef veritabanına sağ tıklayın ve ardından Görevler, Geri Yükleme ve Veritabanı'nı seçin.

Sol sayfa seçiminde Genel'in seçili olduğundan emin olun, sağdaki "Kaynak" tan "Aygıt" ı seçin ve sağdaki göz at düğmesini tıklayın.

Ekle düğmesini tıklayın.

Getirdiğiniz dosyayı seçin.

Sol sayfanın seçiminden "Seçenekler" i seçin ve aşağıdaki ikisini kontrol edin. Bu ikisini kontrol ederseniz, veritabanına bağlıyken başka bir sistemi takas etmeye zorlayabilirsiniz.

  • Varolan bir veritabanının üzerine yazma
  • Hedef veritabanına varolan bir bağlantıyı kapatma

Ancak, "Hedef veritabanına varolan bağlantıyı kapat" seçeneği işaretli olarak geri yükleme başarısız olursa, özgün veritabanının kullanılamayabileceğini lütfen unutmayın.

Kontrol ettiğinizde, Tamam düğmesini tıklatın.

Tablo yapılandırmasının ve kayıtlarının tamamen geçirildiğini doğrulayabilirsiniz.

Bu arada, SQL Server veritabanının daha yeni bir sürümünü SQL Server'ın eski bir sürümüne geri yüklemeye çalışırsanız, aşağıdaki hatayı görürsünüz: Bu veri taşıma yöntemi, aynı sürümü birbirine veya daha yeni bir sürüme dayanır.

Nasıl yapılır: Verileri SQL (Komut Dosyası) Olarak Çıktı Alma ve Hedef Veritabanında Çalıştırma

Bir tablodaki tüm kayıtların insert deyimleri olarak çıktısının nasıl alınacağı budur. SQL deyimleri neredeyse aynı olduğundan, SQL Server sürümünden bağımsız olarak bazı durumlarda diğer veritabanı türlerine uygulanabilirler.

Ancak, kayıtlar cümleleri tek tek eklemek için yazıldığından, dosya boyutu artar. Bu nedenle, kayıt sayısı arttıkça, işe yaramaz, bu nedenle sayı küçük olduğunda kullanılabilecek bir yöntemdir.

Ayrıca, geçirildiği tablo için SQL oluşturur, bu nedenle geçirildiği tablo yapılandırmasından farklıysa kullanılamaz. SQL'de tablo oluşturmayı da ekleyebilirsiniz, ancak tabloyu hedefte bir kez silmeniz gerekir.

prosedür

SQL Server Management Studio'yu kaynaktan başlatın. SQL Server sürümünüzle eşleşen bir klasör seçin.

Hedef sunucuda oturum açın. SQL Server Management Studio kullanan bilgisayarlar diğer bilgisayarlarda iyidir, ancak bu İpuçları hepinizin kendi sunucularınızda çalışmasına olanak tanır.

Hedef veritabanına sağ tıklayın ve "Görev" ve "Komut Dosyası Oluştur" u seçin.

İleri'ye tıklayın.

Hangi tablolar için veri taşınacağını seçebilirsiniz. Tümünü seçin veya burada belirli bir tabloyu seçin.

Çıktı SQL olduğundan, "Dosya", "Pano" veya "Pencerede Göster" i seçebilirsiniz. Seçildikten sonra, sağ üstteki "Gelişmiş" düğmesini tıklayın.

Genel grubundaki "Komut dosyaları oluşturulacak veri türleri"nden Yalnızca Veri'yi seçin.

Bundan sonra, onaylamak için "İleri" yi seçin. SQL'in oluşturulduğunu görebilirsiniz. Geriye kalan tek şey bu SQL'i hedefte çalıştırmaktır.

Yalnızca bir insert deyimi olduğundan, verilerin aynı olmasını istiyorsanız, hedefteki tüm kayıtları önceden silmeniz gerekir.

Tablo yapılandırmalarını da geçirme

Tablo yapılandırmalarını da geçirmek istiyorsanız, önceki "Komut dosyaları oluşturmak için veri türü" seçimini Şema ve Veri olarak ayarlayın.

Tablo oluşturma komut dosyası da aşağıdaki gibi oluşturulur: Bunu kullanmak isterseniz, geçirilecek tablo silindikten sonra yürütülür.

Ayrıca, dahil edilmişse bir veritabanı oluşturma komut dosyası da oluşturur.

Verileri Alma ve Verme özelliğini kullanarak verileri geçirme

SQL Server'ı yüklerken, Verileri İçeri ve Dışarı Aktarma adlı bir araç da yüklersiniz. Bir tablodan başka bir sunucuya veri geçirmek için kullanabilirsiniz.

Bu araç geçişinin avantajı, verilerin SQL Server'ın eski sürümlerine de geçirilebilmesidir. Kullanımı biraz zordur, ancak yaklaşık 1 milyon veri ile bile birkaç dakika düzeyinde geçirilebilir, bu nedenle büyük veri geçişi için de uygundur. Ancak, kaynak ve hedef sunucuların özel bir ağa bağlı olması gerektiğini ve tamamen farklı ağlara sahip sunucular arasında kullanılamayacağını unutmayın.

önkoşul

Bu aracı kullanan bir bilgisayardan her SQL Server'a erişebilmek için SQL Server kimlik doğrulaması veya Windows kimlik doğrulaması oluşturun.

Bu İpuçları, bu aracı geçirildiği sunucudan kullanır.

prosedür

Başlat menüsünden Verileri İçe ve Dışa Aktar'ı seçin. SQL Server'daki bir klasöre eklenir, ancak klasör adı SQL Server sürümüne bağlı olarak değişir, bu nedenle zamanında arayın.

İleri'ye tıklayın.

Geçiş yapmak istediğiniz veritabanını seçin. Bu sefer kaynak sunucuda çalışıyor, böylece Windows kimlik doğrulamasından geçebilirsiniz.

Parametre adı ayarı değer açıklamaları
Veri kaynakları SQL Server yerel istemci 11.0
Sunucu adı (yerel) Farklı bir sunucuysa veya bir örnek adı belirtilmişse, lütfen değerini girin
kimlik doğrulama Windows kimlik doğrulaması
veritabanı SampleDatabase (Örnek Veritabanı Gerçekten geçiş yapmak istediğiniz veritabanının adını girin

Ardından, hedef veritabanı için bağlantı ayarlarını yapın. SQL Server kimlik doğrulaması, farklı bir sunucuda olduğu için kullanılıyor.

Parametre adı ayarı değer açıklamaları
Veri kaynakları SQL Server yerel istemci 11.0
Sunucu adı Hedef sunucu adı (+ \örnek adı)]
kimlik doğrulama SQL Server kimlik doğrulaması
veritabanı SampleDatabase (Örnek Veritabanı Gerçekten geçirilecek veritabanının adını girin

"Bir veya daha fazla tablo veya görünümden veri kopyala" seçeneğini işaretleyin ve sonraki düğmeyi tıklayın.

Geçirmek istediğiniz tabloyu seçin. Bu liste aynı zamanda görünümü de gösterir, bu nedenle kontrol etmeyin.

Kaynak ve hedef tablo adları aynıysa, geçirilecek tablo otomatik olarak seçilir. Ayrıca, sütun adları aynıysa sütun adlarının eşlemesini otomatik olarak ayarlar.

Aklınızda bulundurmanız gereken bazı noktalar şunlardır:

  • Birincil anahtar otomatik olarak numaralandırılırsa, "Eşlemeyi düzenle"den "Kimlik eklenmesine izin ver" seçeneğini işaretlemezseniz taşıma işlemi başarısız olur
  • Geçilecek tablo yoksa, bir tablo oluşturulur
  • Hedef tablo aynı sütun adına sahip değilse, geçirilmez. Hedef sütunu taşımaya veya değiştirmeye devam etmeyin.
  • Kayıtlar varsayılan olarak eklenir. Değiştirmek isterseniz, hedefteki kaydı önceden silin veya "Eşlemeyi düzenle" den "Hedef tablodaki satırları sil" i işaretleyin

Aslında, yukarıdakileri göz önünde bulundurmalısınız, ancak bu İpuçlarında, hedefte veri yoktur ve otomatik numaralandırma yoktur, böylece hiçbir şey ayarlamadan devam edebilirsiniz.

"Şimdi Çalıştır" seçeneğinin işaretli olduğundan emin olun ve "İleri" yi tıklayın.

Bitti'yi tıklayın.

Veri geçişi başlar. Tüm taşıma işlemleri tamamlandığında kapatın.

Hedef veritabanına bakarsanız, var olmayan bir tablonun oluşturulduğunu doğrulayabilirsiniz. Varolan tablolar için artık sütun olmadığını da görebilirsiniz.

Verilerin geçirilmekte olduğunu doğrulayabilirsiniz. Tablo 2'deki not sütunları eşlenmemiştir ve geçirilmemiştir.