Microsof SQL Server Günlük Yedekleme Ve Silme
Microsoft SQL Server’ın Express sürümü adından da anlaşılacağı üzere bazı özellikleri kısıtlanmıştır yani yoktur. (http://msdn.microsoft.com/en-us/library/cc645993.aspx) SQL Server Express ile işi olanların ilk dikkatini çeken şey otomatik yedek alma sisteminin olmamasıdır.Diğer sürümlerde SQL Agent vardır, ona çeşitli görevler verebilirsiniz, mesela yedekleme için şöyle tanımlar yapabilirsiniz. Her gün sabah 06:00 da Full Backup şeklinde yedek al, öğlen 12:00’de Transaction Log şeklinde yedek al, akşam 18:00’de Full Backup şeklinde yedek al diye komut verebiliyoruz. Fakat express sürümlerinde Agent yoktur bunu yerine TSQL komutlarıyla sql serveri stop etmeden yedek alabiliyoruz.
Biz bugün Sql Serveri stop etmeden hergün tarih bazında yedek alıp eskiye dönük yedeklerinde otomatik olarak silmeyi öğreneceğiz.
Dosyaların hazırlanmış halini sizlerle paylaşacağım,fakat kullanımı hakkında bikaç açıklama yapmam gerekiyor.
Aşağıdaki sql kodu yedekleme kodumuzdur.
- d:\backup\ -> Yedeklemeyi nereye yapacaksak oranın yolunu gösteriyoruz.
- [goplus] Yedekleme yapcağımız veritabanı adını yazıyoruz.
- Aşağıdaki kodda kendimize göre düzenleyeceğimiz kısım bu kadardır.
- Burdan kopyala yapıştır yapıp sql serverde New Query deyip kodumuzu deneyebilir ve akabinde uzantısı ” .sql ” olcak şekilde kaydedebiliriz.Yada aşağıdan hazır dosyaları indirebilirsiniz.
declare @path varchar(255)
SELECT @path = N’d:\backup\’ + CONVERT(VARCHAR(10), GETDATE(), 104)+’.BAK’
BACKUP DATABASE [goplus] TO DISK = @path WITH DESCRIPTION = N’Technogar Yedekleme’, NOFORMAT, INIT, NAME = N’Technogar Yedekleme’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
- Aşağıdaki kod MSDOS kodu olup yedeklemeyi başlatmak için tetiklenmesi gereken bir koddur.
- İstersek üzerine çif tıklayıp istediğimiz zaman yedek alabiliriz.
- D:\backup\yedek.sql yukarıdaki sql kodumuzu nereye kaydettiysek oranın yolunu gösteriyoruz.
- d:\backup Alınan yedekleri belirli aralıklarla silmek için nerede olduklarını gösteriyoruz.
- d -18 Kaç günde bir eski yedekleri silsin onu ayarlıyoruz.
- Burdan kopyala deyip not defterine yapıştırıp yedekle.bat dosyası olarak kaydedebiliriz yada aşağıdaki hazır dosyadan faydalanabiliriz.
sqlcmd -S .\SQLEXPRESS -i D:\backup\yedek.sql
forfiles /p d:\backup /s /m *.BAK /d -18 /c “cmd /c del @file
Yapacağımız işlem bukadar.Yukarıda anlatılmak istenen olayı özetlemek gerekirse.Bilgisayarımızın Yerel Disk D dizininde backup isimli bir klasör var içerisinde yedek.sql diye yedekleme dosyamız var ve goplus adında bir veritabanımız var.MSDOS kodundan bahsetmek gerekirse ilk satır yedek.sql dosyasını tetiklemeye yarıyor,ikinci satırda d:\backup klasörü içerisinde sadece “.bak” uzantılı olup -18 gün içerisindeki dosyaları silmeye yarıyor.Bu şekilde d:\backup klasörü içerisinde 18 günlük döngü halinde yedekleme yapmaktadır.
Son olarak yapmanız gereken şey herşeyi yerli yerine koyduktan,ayarladıktan sonra yedekle.bat dosyasını hergün çalıştırmak.Bunu size zamanlanmış görevler otomatik olarak yapacaktır.Zamanlanmış görevleri kullanmasını bilmeyen var ise internette geniş bilgisi mevcuttur bakabilirler.
Tüm bu işlemleri bir yazılım sayesinde yapmak için konumuza göz atabilirsiniz.