SQL Veritabanı Neden “Suspect” veya “Recovery Pending” Moduna Geçer?
Diyarbakır ve bölge genelinde özellikle kış aylarında veya aşırı sıcaklarda yaşanan voltaj dalgalanmaları ve ani elektrik kesintileri, kasadaki ana sunucunun aniden kapanmasına yol açar. Bilgisayar açıldığında ticari yazılım (Logo Go 3, Akınsoft Wolvox) veya restoran sistemi (SambaPOS) açılmaz; Microsoft SQL Server Management Studio (SSMS) kontrol edildiğinde veritabanının yanında gri renkte (Suspect) veya sarı renkte (Recovery Pending) yazdığı görülür.
Bu durumun teknik açıklaması:
-
Elektrik kesildiği esnada SQL Server motoru disk üzerindeki veri dosyasına (
.mdf) veya işlem günlüğü dosyasına (.ldf) veri yazmaktadır (I/O işlemi). -
Bilgisayar kapandığında işlem yarım kalır, ACID (Atomicity, Consistency, Isolation, Durability) bütünlüğü bozulur.
-
SQL Server servisi yeniden başladığında işlem günlüğünü geriye sarmaya (Rollback) çalışır; ancak
.ldfdosyası bozulduğu için veritabanını güvenlik amacıyla erişime kapatıp “Şüpheli / Bozuk” (Suspect) moduna alır.
SQL Veritabanını Emergency Moda Alarak Kurtarma Aşamaları
Önemli Uyarı: Bu adımlara başlamadan önce SQL servislerini (MSSQLSERVER) durdurup DATA klasöründeki .mdf ve .ldf dosyalarının birer ham kopyasını güvenli bir diske yedekleyin.
1. Veritabanını Acil Durum (EMERGENCY) Moduna Çekme
SSMS üzerinde yeni bir sorgu penceresi (New Query) açarak veritabanını salt okunur ve sistem yöneticisinin erişebileceği acil durum moduna alın:
ALTER DATABASE [VeritabaniAdiniz] SET EMERGENCY;
GO
ALTER DATABASE [VeritabaniAdiniz] SET SINGLE_USER;
GO
2. Bütünlük Kontrolü ve Bozukluk Tespiti
Veritabanı tablolarındaki hasarı tespit etmek için kontrol komutu çalıştırılır:
DBCC CHECKDB ([VeritabaniAdiniz]);
GO
Ekranda kırmızı renkli indeks veya sayfa (page level) bozulma bildirimleri dökülecektir.
3. Bozuk Transaction Log Dosyasını Düşürme ve Onarım (REPAIR_ALLOW_DATA_LOSS)
En kritik adım burasıdır. Bozuk olan LDF dosyası gözden çıkarılarak veritabanı tutarlı hale getirilir:
DBCC CHECKDB ([VeritabaniAdiniz], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;
GO
Bu komut; tamamlanamamış bozuk işlem günlüklerini siler, veri dosyası üzerindeki indeksleri yeniden inşa eder ve veritabanını tekrar tutarlı (consistent) bir duruma getirir.
4. Veritabanını Tekrar Çoklu Kullanıcıya Açma
Onarım tamamlandıktan sonra veritabanı standart çalışma moduna döndürülür:
ALTER DATABASE [VeritabaniAdiniz] SET MULTI_USER;
GO
ALTER DATABASE [VeritabaniAdiniz] SET ONLINE;
GO
Sorgu başarıyla tamamlandığında veritabanının yanındaki “Suspect” ibaresi kaybolur ve ticari yazılımınız normal şekilde açılır.
Veri Bütünlüğü ve Koruma Stratejisi
Bozulmuş bir SQL veritabanını kurtardıktan sonra tablolar arası ilişkilerin (Foreign Key) sağlamlığını kontrol etmek ve geçmişe dönük fiş mutabakatı yapmak gerekir. Ayrıca işletmeye kesintisiz güç kaynağı (UPS) temin edilmelidir. Kritik kurumsal verilerinizin kayıpsız kurtarılması ve otomatik izole yedekleme mimarileri için BaykalSoft veritabanı uzmanlarımızla doğrudan iletişime geçebilirsiniz.