Makale Özeti

Sql Server 2005 ile yeni gelen ve hayat kurtaran :) özelliklerden biri olan Database SnapShot' i inceleyecegiz.Bu özellik ile veritabanimizin bir read-only kopyasini olusturuyoruz.Aslina bakarsaniz ben bu olayi bir kötümser senaryo ile degerlendirecegim.

Makale

Sql Server 2005 ile yeni gelen ve hayat kurtaran :) özelliklerden biri olan Database SnapShot' i inceleyecegiz.Bu özellik ile veritabanimizin bir read-only kopyasini olusturuyoruz.Aslina bakarsaniz ben bu olayi bir kötümser senaryo ile degerlendirecegim.Hepinizin bildigi üzere veritabani yedekleme islemleri gerçeklestiriyoruz.Bu senaryolar en sik kullandiklarimiz veritabaninin tümünü backup'layan model olan Full , sadece degisiklikleri yedekleyen Differential model ve son olarak sadece islemlerimizin bilgisini yedekleyecegimiz Transaction Log backuplar.

simdi aslina bakarsaniz buraya kadar hersey normal gözüküyor ama söyle bir senaryomuz olsa veritabani ile ilgili bir sikinti yasadigimiz farzedelim ve elimizde 1 Full 1 Dif. ve 1 T.Log backup'imiz olsun.
Backup'tan geriye dönme senaryomuz olan Restore modeli ile islemimize basliyoruz.Öncelikle Full ardindan Dif. ve de ardindan T.Log seklinde islemlerimizi yapiyoruz.T.Log backup senaryomuzda anlik bir dönme islemini gerçeklestireceksek eger Point in Time Restore isimli seçenegi isaretleyerek specific bir zamana Focus oluyoruz.

Database SnapShot'in hayatimizi kolaylastiran en büyük noktalarindan bir tanesi gerçek Db 'miz Production da yasam döngüsü devam ederken biz sadece snapshot'imizla ilgilenebiliriz.
Ne demek istiyorum aslinda ? Arkadaslar Backup ile ilgili senaryodan geri dönme islemini yapmak biraz sikintili özellikle Production disinda kalan zamanlarini kullanmaniz gerekmektedir.
Düsünsenize size birisi db içerisinde 2-3 dk. evvel bir hata yaptigini söylüyor.Sizin yapmaniz gereken elinizde eger bir backup'iniz varsa bu specific zamana dogru sisteminizi restore etmektir.
Peki elimizde T.Log backup'imizda var ama asil soru arkadasimiz hatanin 2-3 dakika evvel oldugunu söylüyor.Hata 2.dakika mi yoksa 3. dakika mi ? ya da 2 ile 3. dakika arasinda ne zaman ? iste önemli sorular bunlar...
Düsünsenize siz bu bilinmeyen süre zarfinda birkaç önemli islemide sisteminizi restore ettiginizde kaybedeceksiniz. iste Database SnapShot aynen T.Log aldigim sekilde bir DB min SnapShot'ini almis olacagim ve en önemlisi Production da yasayan Db 'im herhangi bir durgunluk yasamadan tekrar hayatina devam edecek.Kaldi ki ben SnapShot'imi bir tablo gibi sorgulayarak hangi satirda nasil bir hata yapmisim bunuda kolayca görebilecegim.
O zaman senaryomuza baslayalim.Öncelikle elimizde içerisinde 5 adet kayit bulunan bir Kisiler tablomuz olsun.


Senaryomuz geregi öncelikle Veritabanimizi ve ardindan tablomuzu olusturduk.Olusturdugumuz tablomuza 5 adet kayit ekledik ve ardindan snapshot alma islemimizi gerçeklestirdik.



içerisinde 5 kayit olan Kisiler tablomuza
insert into Kisiler values('Hakan','Ulagan',34)
kaydimizi ekliyoruz.



Ve tekrar Snapshot'imiza baktigimizda 5 adet kayit oldugunu görüyoruz.
Select * from YazilimSnap.dbo.Kisiler
simdi senaryomuzu isletmeye baslayalim Productionda bulunan Kisiler tablomuz üzerinde bir Update islemi gerçeklestiriyoruz.
update Kisiler set Adi='Hebele' where KisiID=2


Halbu ki SnapShot Db miz içerisinde Kisiler isimli tablomuzu inceleyecek olursak orada kaydimizin orjinal halini göruruz. O zaman simdi Kisiler isimli tablomuz Productionda yasamaya devam ederken bir SnapShot'imizi sorgulayalim ve orada yanlislikla Update ettigimiz ifadeyi geri alalim ama bunu yaparken en önemli nokta burasi Db miz halen daha productionda yasamaya devam edecek ve sadece T-Sql komutlarini kullanarak bu islemi yapacagiz.
iste bu islemi gerçeklestiren T-sql komutlarimiz


declare @ad nvarchar(50)
Select @ad=Adi from YazilimSnap.dbo.Kisiler where KisiID=2
update YazilimUzmani.dbo.Kisiler Set Adi=@ad where KisiID=2

Ve ardinda tekrardan Productionda ki Kisiler tablomuzu sorgularsak

Select * from YazilimUzmani.dbo.Kisiler



Bir sonra ki yazida görüsmek dilegiyle...

Her türlü soru, görüş ve önerileriniz için soner.yasar@bilgeadam.com adresine mail atabilirsiniz.