SQL Server'da Birden Fazla Veritabanını Nasıl Geri Yüklersiniz (3 Yöntem)

SQL Server'da birden fazla veritabanını aynı anda nasıl geri yüklersiniz? Genellikle verimli bir T-SQL komut dosyası kullanabilirsiniz veya daha az kısıtlamalı güçlü bir yazılımı deneyebilirsiniz.

Amelia

By Amelia Updated on February 8, 2025

Share this: instagram reddit

Tüm SQL veritabanlarını aynı anda geri yükleyebilir misiniz?

EMS GUI"nin maalesef yalnızca bir veritabanını geri yüklemeyi desteklediği üzücü. Birden çok veritabanını birden çok bak dosyasına yedeklediyseniz, hepsini aynı anda geri yükleyebilir misiniz?

Cevap EVET. Genel olarak, bir T-SQL betiği kullanarak birden çok veritabanını aynı anda geri yükleyebilirsiniz, ancak yedek dosyaları tam olarak ilgili veritabanlarından sonra adlandırdıysanız ve tarih/saat gibi ek bilgiler içermiyorsa.

Daha esnek bir şekilde yapmak isterseniz, GUI ile daha kolay bir alternatif de vardır. Sadece tercih ettiğiniz yöntemi seçin.

sql server

SQL Server"da birden çok veritabanını geri yüklemenin önkoşulları

SQL Server"da birden çok veritabanını kurtarmak karmaşık bir süreç olabilir. Downtime"ı en aza indirmek için başlamadan önce karşılanması gereken bazı önkoşullar vardır:

  • Yönetimsel yetkilere ve yedek dosyalarına erişiminizin olması gerekir.
  • Her bir yedek dosyası için yalnızca bir veritabanı yedeği olmalıdır.
  • Yedek dosyasının veritabanında yalnızca iki dosya olabilir: Log dosyası ve Veri dosyası.
  • Yeni geri yüklediğimiz veritabanının fiziksel dosyalarına veritabanı adını kullanıyoruz, bu nedenle fiziksel dosya adlarında kullanılabilecek karakterlere izin verilmelidir.

Yol 1. xp_cmdshell kullanarak bak dosyalarından birden çok veritabanını geri yükleme

Bir betik kullanarak SQL Server"da birden çok veritabanını bir klasörden geri yükleyebilirsiniz. Ancak önce örneğe bağlanmanız ve xp_cmdshell"i etkinleştirmeniz gerekiyor.

1. Yeni Sorgu"ya tıklayın ve aşağıdaki komutu girin:

-- Gelişmiş seçeneklere izin vermek için.
EXEC sp_configure "show advanced options", 1;

GO
-- Mevcut yapılandırılmış değeri güncellemek için.
RECONFIGURE;
GO
-- Özelliği etkinleştirmek için.
EXEC sp_configure "xp_cmdshell", 1;
GO
-- Bu özelliğin yapılandırılmış mevcut değerini güncellemek için.
RECONFIGURE;
GO

Yukarıdaki sorguyu çalıştırın ve özellik etkinleştirilecektir.

enable xp cmdshell

2. Ardından, senaryoyu kullanarak SQL Server"ın birden fazla veritabanını geri yükleyebilirsiniz (lütfen "D: \ yedek \ " ile kendi tüm yedek dosyalarını içeren klasörünüzü değiştirin):

DECLARE @FilesCmdshell TABLE (
outputCmd NVARCHAR (255)
)
DECLARE @FilesCmdshellCursor CURSOR
DECLARE @FilesCmdshellOutputCmd AS NVARCHAR(255)

INSERT INTO @FilesCmdshell (outputCmd) EXEC master.sys.xp_cmdshell "dir /B D:\backup\*.bak"
SET @FilesCmdshellCursor = CURSOR FOR SELECT outputCmd FROM @FilesCmdshell

OPEN @FilesCmdshellCursor
FETCH NEXT FROM @FilesCmdshellCursor INTO @FilesCmdshellOutputCmd
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @cmd NVARCHAR(MAX) = "RESTORE DATABASE [" SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX(".", @FilesCmdshellOutputCmd)) "] FROM DISK = N"'D:\backup\" SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX(".", @FilesCmdshellOutputCmd)) ".bak"' WITH FILE = 1, NOUNLOAD, STATS = 10"
EXEC(@cmd)

FETCH NEXT FROM @FilesCmdshellCursor INTO @FilesCmdshellOutputCmd
END

restore multiple databases

✎Not: "The tail of the log for the database has not been backed up. Use BACKUP LOG WITH NORECOVERY to backup the log if it contains work you do not want to lose. Use the WITH REPLACE or WITH STOPAT clause of the RESTORE statement to just overwrite the contents of the log" hatası alırsanız, çözüm tam olarak belirtildiği gibidir.

Örneğin, geri yükleme komutunu "...WITH FILE = 1, REPLACE, NOUNLOAD, STATS = 10" şeklinde değiştirebilirsiniz

Yol 2. SQL Server"da tüm veritabanlarını geri yüklemek için komut dosyası oluşturma

Alternatif olarak, SQL Server"daki tüm veritabanları için geri yükleme komutlarını oluşturan bir komut dosyası kullanabilir ve bunları yeni bir komut dosyası olarak birleştirebilirsiniz.

1. Yeni Sorgu"ya tıklayın ve SQL Sorgu penceresine aşağıdaki komutları girin:

DECLARE @folderpath VARCHAR (1000)
SELECT @folderpath = "D:\Yedek\" -- Yedekleme Konumu
SELECT "RESTORE DATABASE[" NAME "] FROM DISK = "'" @folderpath name ".bak"' WITH NORECOVERY,
REPLACE, STATS = 5"
FROM master.sys.databases
WHERE name NOT IN ("master","model","msdb","tempdb","distribution")

Bu, SQL Server"da aynı adlara sahip .bak dosyalarından çoklu veritabanlarını geri yüklemek için bir dizi komut oluşturacaktır.

2. Sonuçlar içindeki herhangi bir komuta sağ tıklayın, Tümünü seç ve ardından Kopyala (ya da Ctrl A ve Ctrl C kullanın).

komutları oluştur

3. Bu komutları, ilgili dosya adlarına sahip bak dosyalarından SQL Server"ın tüm veritabanlarını geri yüklemek için yeni bir komut dosyası olarak SQL Sorgu penceresine yapıştırarak Çalıştırın.

tüm veritabanlarını geri yükle

Yol 3. GUI ile birden fazla SQL veritabanını yedekleme ve geri yükleme (en kolay yöntem)

Yukarıdaki komutlar, bak dosyalarının tam olarak SQL veritabanlarına göre adlandırıldığı durumlarda geçerlidir, bu da pratikte oldukça kısıtlayıcıdır. Bu nedenle, birden fazla veritabanını veya hatta tüm örneği yedekleme ve geri yükleme için daha kullanışlı bir yöntem sunmak istiyorum.

AOMEI Cyber Backup, LAN içindeki tüm masaüstü bilgisayarlar, dizüstü bilgisayarlar ve sunucular üzerinde SQL veritabanlarını yedekleme ve geri yükleme konusunda güvenilir bir merkezi yönetim çözümüdür.

Windows 11/10/ 8.1/8/7, Windows Server 2022/2019/2016/2012 (R2)/2008 (R2) üzerinde çalışır ve SQL Server 2005"ten 2022"ye kadar yedekleme desteği sunar. SQL veritabanlarının yanı sıra, Hyper-V ve VMware"nin sanal makine yedeklemesini de destekler.

Ücretsiz Deneme sürümünü İndirMicrosoft SQL Server 2005-2022
Merkezi ve güvenli SQL yedekleme
  • AOMEI Cyber Backup"ı yüklemek için indirilen .exe dosyasını çalıştırın ve ana arayüzünü başlatın. Kaynak Cihaz -> Microsoft SQL -> Microsoft SQL Ekle öğesini tıklayın.

Microsoft SQL

  • Proxy programı indir veya Bağlantıyı kopyala seçeneğini seçerek SQL Server"ı yüklü olan cihaza Agent programını indirin ve kurun. Ardından Kurulu proxy kullan seçerek cihazı seçin.
  • Sonra, icon -> Kimlik Doğrulama öğesine tıklayarak veritabanı örneğini doğrulayın. Windows Kimlik Doğrulama veya SQL Kimlik Doğrulama seçebilirsiniz.

Cihaz Ekle

Tamamlandı, şimdi eklenen SQL Server için zamanlanmış veri yedeklemesi yapabilirsiniz.

SQL Server"da birden fazla veritabanını nasıl yedekleyebilirsiniz:

1. Yedekleme Görevi -> Yeni Görev Oluştur öğesini tıklayın ve Yedekleme Türü olarak Microsoft SQL Yedekleme"yi seçin.

Yedekleme Türü

2. SQL yedeği için SQL örneği ve veritabanlarını belirtmek için Aygıt Adı üzerine tıklayın. İhtiyacınıza göre bir veya birden fazla veritabanı seçebilirsiniz.

Veritabanı Seçin

3. SQL yedeklerinizi saklamak için bir Hedef depolama alanı seçin. Yerel bir yol veya ağ yolu belirtebilirsiniz.

Hedef Seçin

4. Günlük, haftalık veya aylık olarak SQL veritabanı yedeğini yürütmek için Zamanlama"yı yapılandırın ve yedekleme yöntemini Tam, Artımlı veya Fark Yedeklemesi olarak seçin.

Zamanlama Yedekleme

Yedekleme görevini oluşturmak ve yürütmek için Yedeklemeyi Başlat düğmesine tıklayın. Tamamlandığında, yedekleme görevini Yedekleme Görevi sekmesinde bulabilirsiniz.

✍Daha kullanışlı özellikler:

  • Yedekleme Temizleme, daha eski yedekleme sürümlerini otomatik olarak silmenizi ve böylece depolama alanı tasarrufu yapmanızı sağlar.
  • E-posta Bildirimi, görev anormal veya başarılı olduğunda e-posta bildirimleri almanızı sağlar.
  • Arşiv, yedekleme dosyalarını AWS S3 depolama alanına arşivlemenize yardımcı olur.

◉ Nasıl birden fazla veritabanını yedeğinden geri yükleyebilirsiniz:

1. Sol menü çubuğunda Yedekleme Görevi"ne tıklayın, geri yüklemek istediğiniz görevi bulun ve simge -> Geri Yükle düğmesine tıklayın.

Geri Yükle

2. SQL veritabanlarını geri yüklemek istediğiniz bir yedekleme sürümü seçin.

İçeriği Seçin

3. Ardından, geri yüklemeyi yapmak istediğiniz hedef konumu seçin. 2 seçenek vardır:

  • Orijinal konuma geri yükle (varsayılan): mevcut durumu bir önceki sürüme geri döndürebilen yerinde kurtarmadır.
  • Yeni bir konuma geri yükle: mevcut alan dışında bir geri yükleme yapmak için başka bir hedef seçin. Yeni veritabanının adını belirleyebilir ve depolama konumunu değiştirebilirsiniz.

Orijinal Konuma Geri Yükle

Aynı isimle veritabanını üzerine yaz: Bu seçeneği işaretlerseniz, yedeklenen veritabanları aynı isimle hedef veritabanlarının üzerine yazacaktır. İşaret koymazsanız, aynı isimli hedef veritabanları geri yüklerken atlanacaktır.

4. Tüm ayarları yaptıktan sonra, geri yükleme işlemini başlatmak için Geri Yüklemeyi Başlat düğmesine tıklayın ve tamamlanmasını sabırla bekleyin. Geri yüklemeyi ayrıntıları görüntülemek veya iptal etmek için ikon düğmesine tıklayabilirsiniz.

Geri Yükleme Başlat

✍Notlar:

  • "Orijinal konuma geri yükle" işlemi önceki konumun var olduğunu doğrulamalıdır. Aksi durumda, yalnızca "Yeni konuma geri yükle" seçeneğini seçebilirsiniz.
  • "Orijinal konuma geri yükle" işlemi, önceki veritabanının verilerini üzerine yazacak veya silecektir; önemli verilere sahip olan önceki veritabanınız varsa, "Yeni konuma geri yükle" seçeneğini seçmeniz önerilir.

Sonuç

SSMS geri yükleme arayüzü, yalnızca bir veritabanını aynı anda geri yüklemenizi sağlar. Birden fazla veritabanını SQL Sunucusu"nda aynı anda geri yüklemek isterseniz, en yaygın yöntem T-SQL komut dosyası kullanmaktır. Ancak, yedek dosya adlarına sıkı kısıtlamalar getirir ve veritabanlarını başka bir örneğe geri yükleme gibi işlemleri gerçekleştirmeyi zorlaştırır. Bu nedenle, SQL yedekleme yazılımı olan AOMEI Cyber Backup"i deneyebilirsiniz.

İşlemi çok daha kolay hale getirir. Örneğin, birkaç basit tıklama ile SQL veritabanlarını otomatik olarak yedekleyebilir ve eşit derecede kolay işlemle birden fazla veritabanını aynı anda geri yükleyebilirsiniz.

Amelia
Amelia · Editor
Amelia, AOMEI'den bir editördür. Profesyonel sistemler konusunda eğitim almış olup, kurumsal veri tabanları, sanal makineler ve fiziksel ortamlardaki sorunları çözme konusunda uzmanlaşmıştır. Yüksek bir sorumluluk duygusuyla, iş verilerini ve güvenliğini korumaya kendini adamıştır.