-- SQL Server, T-SQL

SSMS ve T-SQL ile Veritabanı Yedekleme İşlemleri

SQL Server yedekleme işlemleri veri güvenliği için kritik seviyede önemlidir. Doğru yapılandırılmamış ve zamanlanmamış bir yedekleme işlemi sonucunda hem performans hem de verinin kurtarılması gibi senaryolarda başarısızlık oluşması kaçınılmazdır.

Bu makalemde temel olarak, yeni bir veritabanı yedeğinin nasıl oluşturulacağı ve iş süreçlerine değineceğiz.

Bir veritabanı yedeği, SSMS aracı ve T-SQL olmak üzere iki şekilde alınabilir. Biz önceliğimizi T-SQL’e vererek programatik olarak nasıl yedek oluşturulabileceğini inceleyeceğiz. Öncelikle C:\ dizini içerisinde Backups adında yeni bir klasör oluşturun ve aşağıdaki kodları yazın.

BACKUP DATABASE AdventureWorks
TO DISK='C:\Backups\AWorks1.bak';

Yukarıdaki sorguyu çalıştırdıktan sonra, C:\Backups içerisinde AWorks1.bak adında bir veritabanı yedeğini görebilirsiniz.

BACKUP DATABASE AdventureWorks
TO DISK='C:\Backups\AWorks2.bak'
WITH INIT;

INIT ile yedekleme, mevcut yedek verinin üzerine yazılmasını sağlar.

Tam veritabanı yedeği yerine, fark yedeği almak için şu ifade kullanılabilir.

BACKUP DATABASE AdventureWorks 
TO DISK = 'C:\Backups\AWorks3.BAK' 
WITH DIFFERENTIAL;

Veritabanının birden fazla dosyaya yazdırılması için şu ifade kullanılabilir.

BACKUP DATABASE AdventureWorks
TO DISK='C:\Backups\AWorks4.BAK', 
DISK='D:\Backups\AWorks5.BAK', 
DISK='E:\Backups\AWorks6.BAK';

Yedeklenen veritabanında, geri yükleme işleminde kullanılacak bir şifre oluşturmak için şu ifade kullanılabilir.

BACKUP DATABASE AdventureWorks 
TO DISK = 'C:\Backups\AWorks7.bak'
WITH PASSWORD = 'C!İ@H#A$N#';

Veritabanı yedekleme işleminin yüzdesel olarak tamamlanma oranının gösterilmesini sağlamak için şu ifade kullanılabilir.

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AWorks8.BAK'
WITH STATS;

Ekran Alıntısı

Yukarıdaki sorgu çalıştırıldığında, SSMS sorgu ekranının Messages kısmında, varsayılan olarak her tamamlanan %10 işlem için bildirim yapılır. WITH STATS aşağıdaki gibi kullanıldığı taktirde, farklı yüzde oranına göre de mesaj bildirimi yapılabilir.

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AWorks9.bak'
WITH STATS = 2;

Ekran Alıntısı

Veritabanı yedeği için bir açıklama satırı eklenebilir. Bu işlem için şu ifade kullanılabilir.

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AWorks10.bak'
WITH DESCRIPTION = 'AdventureWorks için Tam Yedek';

Yedekleme sırasında, birden fazla özellik tanımlayabilmek için şu ifade kullanılabilir. Bu sorguda, hem Mirror işlemi, hem de birden fazla özellik tanımlaması yapalım.

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AWorks11.bak'
MIRROR TO DISK = 'C:\Backups\AdventureWorks_MIRROR.bak'
WITH FORMAT, STATS, PASSWORD = 'C!İ@H#A$N#';

Mirror, hazırlanan yedeğin bir kopyasının daha oluşturulması için kullanılır. Bir yedek bozulursa, Mirror ile alınan diğer yedek kullanılabilir.

Bir veritabanı yedeği dosyası hakkında bilgi almak gerekebilir. Yedek içerisinde bulunan, veritabanına ait dosya adları, uzantıları ve boyutu gibi bilgileri elde etmek için aşağıdaki sorgu kullanılabilir.

RESTORE FILELISTONLY
FROM DISK = 'C:\Backups\AWorks12.bak';

Şu ana kadar bir çok farklı parametre ve yedek oluşturma versiyonu gördünüz. Şimdiyse, bu komutları tek bir script olarak oluşturup, programlamasını gerçekleştirelim.

BACKUP DATABASE AdventureWorks 
TO DISK = N'C:\Backups\AWorks13.BAK'
WITH NOFORMAT, NOINIT, 
NAME = N'AdventureWorks - Full Database Backup', 
SKIP, NOREWIND, NOUNLOAD, COMPRESSION, 
STATS = 10, CHECKSUM, CONTINUE_AFTER_ERROR 
GO 
DECLARE @BackupSetID AS INT SELECT @BackupSetID = position 
FROM msdb..backupset 
WHERE database_name = N'AdventureWorks' 
AND 
backup_set_id = (SELECT MAX(backup_set_id) 
FROM msdb..backupset 
WHERE database_name = N'AdventureWorks') 
IF @BackupSetID IS NULL
BEGIN RAISERROR(N'Doğrulama başarısız! ''AdventureWorks'' bilgisi bulunamadı.', 16, 1) 
END 
RESTORE VERIFYONLY FROM DISK = N'C:\Backups\AWorks13.BAK'
WITH FILE = @BackupSetID, 
NOUNLOAD, 
NOREWIND
GO

T-SQL ile yedekleme işlemleri programatik olarak önemlidir. Ancak genel olarak SSMS arayüzü de kullanarak bu işlemler gerçekleştirilebilir. Şimdi, SSMS ile bu işlemleri gerçekleştirelim.

Adsız

Back Up… butonuna bastıktan sonra açılan form aşağıdaki gibidir.

Ekran Alıntısı

Backup Type alanında Full ve Differential olmak üzere iki yedek tipi seçilebilmektedir.

Copy-only Backup seçeneği seçiliyse, oluşturulan yedek Mirror edilir, yani kopyası oluşturulur.

Ekran Alıntısı

Burada önemli olan özelliklerden biri Compression alanıdır. İlk seçenek varsayılan server ayarlarını kullanır. Diğer seçeneklerse sıkıştırma ve sıkıştırmama seçenekleridir.

İyi çalışmalar.
Cihan

Yorumla

Yorum