Page Restore

Veritabanı suspect mode’a düştüğünde full backup’tan restore işlemini yapmadan önce sadece bozulmuş page’leri restore ederek bazen sorunu çözebiliriz. Aşağıdaki script yardımıyla suspect olmuş page’leri bulabilirsiniz.

 

select * from msdb..suspect_pages

Suspect_pages tablosu aşağıdaki durumlardan sonra değişebilir.

  • Bir query read yapmak istediğinde
  • DBCC CHECKDB komutu çalıştırıldıktan sonra
  • Backup alındıktan sonra

Veritabanı üzerinde aşağıdaki script’i kullanarak restore edeceğimiz page’leri teyit edelim.

DBCC CHECKDB (N'Test') WITH NO_INFOMSGS, ALL_ERRORMSGS;

Bu işlemden sonra aşağıdaki script’i tekrar çalıştıralım.

select * from msdb..suspect_pages

Restore işlemine başlamadan önce suspect mode’a düşmüş veritabanından aşağıdaki script yardımıyla tail log backup almaya çalışalım. Tail Log Backup  son log backup’tan sonraki log kayıtlarının backup’ını alır. NO_TRUNCATE ifadesini sağlam bir veritabanında kullanmamalısınız.

BACKUP LOG Test
TO DISK = 'C:\MSSQL\TestTailLog.trn'
WITH NO_TRUNCATE, COMPRESSION, STATS = 1

Suspect olmuş page’leri bulduktan sonra makalenin başında paylaştığım sorgudaki file_id’leri aşağıdaki script’te 1 gördüğünüz yerlere page_id’leri’de 58 ve 200 gördüğümüz yerlere yazıyoruz ve script’i çalıştırıyoruz.

use master
go
RESTORE DATABASE Test PAGE='1:58, 1:200' 
FROM DISK=N'C:\MSSQL\testfull.bak'
WITH NORECOVERY ;


RESTORE LOG Test FROM DISK=N'C:\MSSQL\testlog.trn' 
WITH NORECOVERY;

Son olarak aldığımız Tail Log Backup’ı recovery mode’da restore ederek işlemi tamamlıyoruz.

RESTORE LOG Test FROM DISK=N'C:\MSSQL\TestTailLog.trn' 
WITH RECOVERY;

 

Page Restore işlemi SQL Server 2012 ile beraber SSMS üzerinden de yapılabiliyor. Aşağıdaki gibi ilgili veritabanına sağ tıklayarak Task-Restore-Page… diyoruz.

 

 

Karşımıza gelen ekranda Pages kısmından Add diyerek restore edeceğimiz page’i ya da page’leri giriyoruz. Tabi alt tarafta backup sets kısmında gözüken backup’ların o path’lerde duruyor olması gerekir. Verify diyerek restore işlemi yapmadan önce o dosyaların doğruluğunu teyit edebilirsiniz.

 

 

 

DBCC CHECKDB ile ilgili “DBCC CHECKDB Detayları” isimli makalemi okumanızı tavsiye ederim.

Loading