Bu konumuz içerisinde SQL Server tarafında Log Backup yardımı ile istenilen zamana restore etme işleminden bahsedeceğim.
SQL Server’da 3 şekilde Backup alabilirsiniz.
- Full Backup
- Differential Backup
- Transaction Backup
Resim-1
Konumuz itibari ile ben sizlere 3′ü madde olan Transaction Backup’ı anlatacağım. Her Transaction’ın işlem bilgilerini içeren Transaction Log Backup ile istenilen bir ana dönmek mümkündür.
Şimdi örneğimize başlayalım;
— Örnek bir Database Create Ediyoruz
CREATE DATABASE TRLogBackup
— Oluşturduğumuz Database Recovery Model bilgisini Full olarak değiştiriyoruz Log Backup Alabilmemiz için Full olmak zorunda.
ALTER DATABASE TRLogBackup SET RECOVERY FULL
— Oluşturduğumuz Backup seçiyoruz
Use TRLogBackup
GO
— TblTarih isiminde Tarih ve deger bilgisi barındıran bir tablo oluşturuyoruz.
Create table TblTarih(Tarih datetime, Deger int)
Log Backup’ların restore edilebilmesi için ilk olarak bir Full Backup’ın restore edilmesi gerekmektedir. O yüzden işlemlere başlamadan önce bir Full Backup alıyorum.
–İşlemlere başlamadan önce Full Backup alıyorum
Backup database TRLogBackup to disk=’D:\TRLogBackup_Full.bak’
Şimdi Farklı zamanlarda 5 Adet Kayıt girişi yapıyorum..
— Farklı zamanlarda 5 kayıt girişi yapıyorum
INSERT INTO TblTarih VALUES (GETDATE(),1)
INSERT INTO TblTarih VALUES (GETDATE(),2)
INSERT INTO TblTarih VALUES (GETDATE(),3)
INSERT INTO TblTarih VALUES (GETDATE(),4)
INSERT INTO TblTarih VALUES (GETDATE(),5)
Oluşturdum Kayıtları Kontrol ediyorum.
— Girilen Kayıtları kontrol ediyorum.
SELECT * FROM TblTarih
Şimdi ise Log Backup Alıyorum.
–Insert işlemlerinden sonra Log Backup alıyorum
Backup Log TRLogBackup to disk=’D:\TRLogBackup_Log.trn’
Evet şimdiye kadar herhangi bir sıkıntı olmadan kayıtlarımızı oluşturduk. Kayıt girişlerimizi de gerçekleştirdik. Bir sebepten dolayı 14:50:00 zamanına geri dönülmesi gerekti.Bu durumda benim TblTarih isimli tablom da sadece 2 kayıt olması gerekiyor.
Şimdi bu işlemi nasıl yapacağız buna bakalım.
Restore işleminde ilk olarak Full Backup’ı restore edip daha sonra Log Backup’ı restore edeceğim. Eğer birden fazla Log Backup var ise istediğim ana gelene kadar bütün Log Backup’ları sırası ile restore etmem lazım. Ben 1 adet Log Backup almıştım.
use master
GO
–Önce Full Backup’ı restore ediyorum.
–Bu işlemden sonra Log Backup’ı da restore edeceğim için.
— WITH NORECOVERY seçeneğini kullanıyorum.
RESTORE DATABASE [TRLogBackup] FROM DISK = N’D:\TRLogBackup_Full.bak’
WITH NORECOVERY, REPLACE
GO
–Şimdi Log Backup’ı restore ediyorum.
–İstenilen bir ana dönmek için STOPAT seçeneğini kullanıyorum
RESTORE LOG [TRLogBackup] FROM DISK = N’D:\TRLogBackup_Log.trn’
WITH STOPAT = ‘2013-07-25 14:50:00.000’
GO
Sonuç;
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar