İçeriğe geç →

Etiket: veritabanı

SQL Server veritabanını Suspect & Emergency modundan kurtarmak

Elektrik kesintisi veya donanım arızalarından kaynaklanan bazı problemler ister istemez çalışan sistemlere zarar verebiliyor. Sadece bilgisayar dosyaları ve işletim sistemi dosyaları değil, veritabanı üzerindeki MDF ve LDF dosyaları da nasibini alıyor.

Bu iki dosyanın birbirleriyle uyumsuz olmaları çeşitli uyarılar ve hatalar döndürüyor veya masterdb üzerinde bozulmalar yaşanabiliyor. Harddisk üzerine veri okuma yazma işlemlerini gerçekleştirememesi de bu sebeplerden birisidir. Bu gibi durumlarda veritabanınız SUSPECT moduna geçebiliyor.

Çözüm:

  1. Sql Management Studio’yu çalıştırın ve master db seçiliyken new query’e basın.
  2. Veritabanı üzerinde el ile ayarlar yapmanız için durum bilgisini sıfırlamanız gerekiyor. >>> EXEC sp_resetstatus ‘DATABASEADI_2017’
  3. Şimdi veritabanı dosyalarını emergency moduna çekelim. >>> alter database DATABASEADI_2017 set emergency
  4. Veri bozukluklarını tespit edelim. (bu işlem 15gb boyutundaki db için 5~10dk civarında sürüyor) >>> dbcc checkdb (‘DATABASEADI_2017’)
  5. Veritabanı üzerinde düzenlemeleri aktif edebilmemiz için emergency modundan çıkartıp bir tek bizim erişeceğimiz hale getiriyoruz. >>> ALTER DATABASE DATABASEADI_2017 SET SINGLE_USER WITH ROLLBACK IMMEDIATE
  6. Şimdi yarım oluşan veya oluşamayan log ve veri dosyalarını kaldırıyoruz. >>> DBCC CHECKDB (‘DATABASEADI_2017’, REPAIR_ALLOW_DATA_LOSS)
  7. Artık normal moda döndürebilir ve kullanıcıların erişimine açabiliriz. >>> ALTER DATABASE DATABASEADI_2017 SET MULTI_USER