MsSQL Server ve Snapshot işlemi
Merhaba arkadaşlar;
Bu makalemizde MsSQL Snapshot dan bahesedeceğim. SQL Server da bulunan herhangi bir databasenin bellir bir zamandaki salt okunur kopyasının alınma işlemidir. Genel olarak databasede değiştirilen kayıtların orjinel hallerinin yedeklemeke ve süreç içerisinde ihtiyaç duyulması halinde bu verilerin orjinal haline döndürülmesinde kullanılan Snapshot ları standart kopyalamalardan ayıran birkaç belirgin özelliği vardır. Snapshot ları sadece yapılan değişiklikleri fiziksel olarak alırlar ve snapshot'ı alınan ana databaseye bağlı çalışmalarıdır. Bunun alnlamı eğer ilgili database ye erişim sözkonusu değilse snapshot larada erişim mümkün olmayacaktır. Herhangi bir database de dilediğimiz kadar snapshot oluşturabilme şansımız var. Böylece veriler ve bu verilerin değişiklerine ilişkin farklı zamanlarda datalara sahip olabiliriz. İstemcilerden snapshot lara herhangi bir istek geldiğinde eğer kayıtta bir değişiklik sözkonusu ise cevap snapshot dan döndürüler, bir değişiklik sözkonusu değilse databaseden döndürülür.
FAT32 dosya sistemi ve RAW partitionlar üzerinde oluşturulamayan snapshotlar Minimum MsSQL Server 2005 Enterprise Edition sürümü ile kullanılabilirler. Snapshot lar doğrudan peer to peer transactional replikasyon gibi çalışmadığı için high availability olarak kullanamamaktayız.
Şimdi dilerseniz bir snapshot örneği ile devam edelim...

Yukarıdaki sorgu ile öncelikle snapshot için bir isim vererek localde hangi dizine kaydolacağını ve ardından hangi database nin snapshot ının alınacağını belirtiyoruz. Yukarıdaki sorguyu Execute etmemiz sonrasında ;

MsSQL Server da Database Snapshots kısmına baktığımızda oluşturduğumuz snapshot ı görebilmekteyiz.

şeklinde bir sorgu ile snapshot'ı çalıştırabiliriz.
Dilersek oluşturduğumuz snapshot ı update edebiliriz.

Eğer bu işlem esnasında snapshot aldığımız veritabanı üzerinde bir işlem var ise "Restore cannot process database 'Mahmut' because it is use by this session" hatasını alırız. Bu durumda bu işlemleri kapatmamız gerekir.
Yada “Database cannot be reverted. Either the primary or the snapshot names are improperly specified, all other snapshots have not been dropped, or there are missing files.” hatasını alırsakta restore edilecek snapshot dışındaki snapshotları silerek sorunu çözebiliriz.
Snapshot’ların metadata bilgisi bulunmaz. Orijinal veritabanına ait metadata bilgilerini taşırlar. Snapshot NTFS'in sadece veri yazılan kısımlarının diskte yer kapladığı NTFS'in zelliklerinden biri olan sparse filelerden en az bir tane kullanır. Bunun anlamı Snapshot ların kullandığı bu sparse file ler başlangıçta herhangi bir data içermediklerinden disk üzerinde de herhangi bir yer kaplamazlar.
Faydalı olması dileğiyle kalın sağlıcakla ..
Mahmut TEMUR
ASP.NET.TR Community Lead
http://www.mahmuttemur.com
e-posta : mahmuttemur@windowslive.com
Takip Ediyorum
Faydalı Projeler
Yorumlar
Sizde Yorumda Bulunun
Konuya dair fikir ve sorularınızı paylaşın