SQL Express’ten Scheduled Backup Almak
Daron Yöndem – SQL Express’ten Scheduled Backup Almak
Blogu yazarkenki hikayalerim bitmiyor değil mi? :) Eh uzun süredir rahat rahat her noktasındaki taktiklerden bahsedebileceğim kendimce özgür bir proje yazdım :)
Genelde müşterilere yapınca projelerin içlerinden birşeyler paylaşmak mümkün olmuyor. Neyse gelelim konumuza. Şimdi benim blog arkada bir SQL 2008 R2 Express kullanıyor. SQL’in Express sürümleri ile beraber bir Agent yapısı gelmiyor ve Schedulde Backup almak doğal olarak dert oluyor. Bunun için ufak bir takniği devreye alıp Windows’un kendi Scheduler’ını kullanabiliriz aslında.
Nasıl mı?
[T-SQL]
declare @DBFileName varchar(256)
set @DBFileName = ‘C:backupsmyblog’ + datename(dd, getdate()) +
datename(m, getdate()) + datename(yy, getdate()) + ‘-MyBlog.bak’
select @DBFileName
BACKUP DATABASE myblog TO DISK = @DBFileName
WITH RETAINDAYS = 30, NAME = N’Blog Backup’, SKIP
GO
İlk olarak yukarıdaki gibi bir T-SQL komutunu bir text dosyasına yazıp diskte güzel bir yere yerleştiriyoruz. Bu T-SQL içerisindeki komut ile veritabanından bir full backup alınacak diskte uygun klasöre tarih bilgisi dosya adı olarak atanarak yerleştiriliyor. Ben çılgınlık yapıp günlük backup alıyorum :) Backup file’ların ayrı ayrı olmasını istedim çünkü başka bir scheduled task bu dosyalardan her gün yaratılan ayrı bir FTP sunucuya atıyor. Dediğim gibi eğer bu kodu ayrı bir dosyaya kaydettiyseniz sıra geldi eski tarz bir BAT dosyası yaratmaya.
[BAT]
“C:Program FilesMicrosoft SQL Server100ToolsBinnSQLCMD.EXE” -S .SQLExpress -i C:backupsbackup.sql
Bat dosyamız içerisindeki komut SQL Server ile beraber gelen SQLCMD.EXE’ye instance adını ve çalıştırılacak T-SQL komutlarının bulunduğu dosyanın adresini veriyor. Böylece bu komut çalıştırıldığında bizim SQLExpress’te biraz önce kaydettiğimiz dosyadaki T-SQL çalıştırılarak istediğimiz yere backup alınmış olacak. Şimdi sıra geldi bu BAT dosyasının Windows Scheduler ile ayarlanmasına.
Server’da Task Scheduler diye aratırsanız hemen bulup ayar ekranını karşınıza getirebilirsiniz. Task Scheduler Library içerisindeki sağ panelden “Create Task” diyerek aşağıda ekrana ulaşabiliyoruz.
Task’ın ayarlarının bulunduğu ilk “General” sekmesinde “Run whether user is logged or not” diyerek logon olmuş olmasak da taskın çalıştırılmasını sağlıyoruz. Bu task artık sizin kullanıcı adınız ve şifrenizi de kaydederik sizin kullanıcınızın hakları ile login olmasanız da çalışacak.
Ayarlar kısmında ikinci sekme olan “Triggers”a girdiğimiz hemen “New” düğmesine basıp yeni bir tetikleyici ayarlayabiliyoruz. Burada ne zaman ve ne aralıklarla taskın çalıştırılacağını belirtebilirsiniz. Eğer siz de benim gibi günlük backup alacaksanız sitenizin en az ziyaret aldığı bir saat aralığını seçmenizde fayda var.
Son olarak artık taskımızın ne yapacağına karar vermemiz gerek. Çalıştırılacak program olarak BAT dosyamızı diskten taskımıza gösteriyoruz. Böylece belirlediğimiz aralıklarda BAT dosyamız çalışacak ve T-SQL’imiz de backup’ı almış olacak. Tüm yapmanız gereken bu kadar. Artık Scheduled bir backup process’iniz var hem de ücretsiz SQL Express ile ;)
Hepinize kolay gelsin.
KAYNAK: DARON YÖNDEM‘in 10/09/2011, 11:30 tarihinde yayınladığı “SQL Express’ten Scheduled Backup Almak” başlıklı yazısından alınmıştır.
No Comments