Bozulan SQL Verisi Kurtarma

Merhabalar;
Bu ipucu yazısında, SQL veritabanı ile uğraşanların mutlaka hayatı boyunca birkez de olsa karşılaşacağı veritabanının bozulma durumuyla ilgili çözüm önerilerini paylaşacağım.

Db neden bozulur :
+ Donanım arızalarında
+ Beklenmedik kapanmalarda
+ Veri dosyasına erişilemediğinde
+ Diskte yeterli alan kalmadığında
+ İşletim sistemi ve sunucu servisi hatalarında

Buradan bakıldığında veritabanının bozulması için ihtimaller hayli fazla;
Herşeyden önce veritabanı sunucusunun ve veritabanlarının düzenli ve sağlıklı olarak yedeklenmesi birinci kuralımız olmakla birlikte, eğer bir veritabanı suspect mode’a düşmüş ise aşağıdaki komutları tek tek uygulayarak db’i yeniden ayağa kaldırabilirsiniz.
Not: bu işlem veri kayıplarına neden olabileceğinden, mutlaka db’nin fiziksel yedeğinin alınması tavsiye edilir.

Sql management studio yardımıyla new query ( yeni sorgu ) diyerek sırayla;
XEC SP_RESETSTATUS ‘VeritabaniAdi’;
ALTER DATABASE VeritabaniAdi SET EMERGENCY
DBCC CHECKDB(‘VeritabaniAdi’)
ALTER DATABASE VeritabaniAdi SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CHECKDB (‘VeritabaniAdi’, REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE VeritabaniAdi SET MULTI_USER

Şimdi yukarıdaki satırları yorumlayalım:
XEC SP_RESETSTATUS ‘VeritabaniAdi’; ( db’nin durumunu resetledik, hali hazırda db suspect mode’da )
ALTER DATABASE VeritabaniAdi SET EMERGENCY ( db’i emergency mode’una aldık )
DBCC CHECKDB(‘VeritabaniAdi’) ( Veritabanı veri bütünlüğünü kontrol ettik )
ALTER DATABASE VeritabaniAdi SET SINGLE_USER WITH ROLLBACK IMMEDIATE ( Veritabanını tek kullanıcı moduna aldık )
DBCC CHECKDB (‘VeritabaniAdi’, REPAIR_ALLOW_DATA_LOSS) ( veri bütünlüğü ve onarım işlemini yaptık )
ALTER DATABASE VeritabaniAdi SET MULTI_USER ( veritabanını çoklu kullanıcı moduna aldık)

Peki db “suspect” oldu ve siz de yanlışlıkla “detach” işlemi yaptınız;
o zaman şu yolu izleyebilirsiniz;
“Detach” edilmiş veritabanı ismiyle bir veritabanı oluşturun.
daha sonra detach edilmiş veritabanı dosyalarını, oluşturduğunuz bu yeni veritabanı dosyalarının üstüne kopyalarak yazabilirsiniz.

Bunun da ötesinde;
eğer mdf hasar görmüş ve ldf dosyaları sağlıklıysa yukarıdaki yöntem işe yarayabilmektedir.

Peki veritabanının tablolarında bir sorun olursa?
bu durumda tabloları onarmak epey zahmetli bir işlem olacaktır. Belki farklı bir yazının konusu yaparız.

Eğer yukarıdaki yöntemler işe yaramazsa, bazı özel ve ücretli uygulamalar da çok başarılı sonuçlar vermektedir. Ama bazen çözüm olmak isterken, sorunun da parçası olabiliyorlar, bu anlamda dikkat etmenizi tavsiye ederim.

Bu tip sorunlarla hiç karşılaşmamanız dileğiyle.
Eğer bu tarz bir sorunla karşılaşırsanız,
Karşılaştığınız sorunu tanımlayarak bana mail atabilirsiniz : ben@mehmetyayla.com

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.