Microsoft Server

MSSQL Database Suspect’ten Kurtarma

Suspect’e düşmüş veritabanlarında genelde veri kayıpları veya veritabanı bütünlüğünde hatalar oluşma ihtimali vardır. Transaction loglarınızda kalan işlemlerin database’e insertlenmeside aksayacağı için veri kaybınız olabilir.

 Eğer ki veritabanınızda çok fazla bir hasar söz konusu değilsede bu veri kaybını en az ile atlatabilmenizde mümkün;

Ama bu işlemlere geçmeden önce bir kaç uyarı yapmak gerek; Bir Repair işlemini  yarıda kesmeyiniz.Suspect olmuş bir Database’i Deattach etmeyiniz.

İlk Önce Suspect’ten çıkaralım

İşlemler listesi sırasıyla şöyledir.

Database Status’ü resetliyoruz.
   
EXEC SP_RESETSTATUS ‘DATABASEADI’

Db ile ilgili işlemleri yapabilmek için Single moda çekiyoruz.
  
ALTER DATABASE DATABASEADI SET SINGLE_USER

Db’yi Emergency Moda alıyoruz.
   
ALTER DATABASE DATABASEADI SET EMERGENCY

Bu işlem Db boyutunu kontrol eder.( Eğer Db boyutunuz yüksek zamanınız da azsa bu adımı atlayın derim)
   
DBCC CHECKDB (‘DATABASEADI’)
ndex bütünlüğünü bypass etmek için
   
DBCC CHECKDB(‘DATABASEADI’, NOINDEX)

Db gerekli Repair işlemlerini başlatmak için ;
   
DBCC CheckDB (‘DATABASEADI’,REPAIR_REBUILD)

yada DBCC CheckDB (‘DATABASEADI’,REPAIR_ALLOW_DATA_LOSS)
 
DBCC CheckDB (‘DATABASEADI’,REPAIR_ALLOW_DATA_LOSS)

(Bu işlemler verikayıplarına sebebiyet verecektir repair işlemi sırasında olan verilerin kaybıdır sadece )

Db’yi tekrar Multi User a ayarlıyoruz;
 
ALTER DATABASE DATABASEADI SET MULTI_USER

(Başarısız olur ise SQL Management Studio üzerindende bu işlemi yapabilirsiniz.)

Tüm işlemleri ise tek bir seferde şu şekilde gerçekleştirebilirsiniz.
   
EXEC SP_RESETSTATUS ‘DATABASEADI’
GO
ALTER DATABASE DATABASEADI SET SINGLE_USER
GO
ALTER DATABASE DATABASEADI SET EMERGENCY
GO
DBCC CheckDB (‘DATABASEADI’,REPAIR_ALLOW_DATA_LOSS)
GO
ALTER DATABASE DATABASEADI SET MULTI_USER

Yazar Hakkında

Kerem Şuğle

Solution Architect

Yorumlar

Kerem Şuğle için bir yanıt yazın X