Bozuk (Suspect) SQL database'i düzeltme


August 2021 (0) Iptv 12/21/2024


Sql Server ile uğraşan herkesin başına gelmesi kuvvetle muhtemel bir durumdur bir veritabanının "Suspect" duruma gelmesi
Bu durumun telafisi için birden çok çözüm mevcut bunları sırasıyla yazacağım. Ancak her şeyden önce bilmeniz gereken bazı detaylar var

REPAIR_FAST : Geriye dönük veri onarım işlevini gerçekleştirir. Veri kaybı olmaz fakat hata alma olasılığı diğerlerine göre daha fazladır.
REPAIR_REBUILD : Bir önceki işlevden bir sonuç alınamadığı zaman kullanılabilir, veri kaybı olmaz fakat hata alma olasılığı vardır. 
REPAIR_ALLOW_DATA_LOSS : Rebuild yaptığınız halde hata almışsanız bu işlemi deneyebilirsiniz fakat veri kaybı olasılığı vardır. Bu nedenle öncesinde yedekleme yapılmalıdır.
Önemli bir hatırlatma : Suspect modundaki veritabanını sakın "Detach" etmeyin yoksa bir daha "Attach" edemezsiniz. Bu yüzden mutlaka ilk iş olarak .mdf ve .log dosyalarını yedekleyip aşağıdaki yöntemlerle şansınızı deneyin. Her denemeden sonra SQL server’ ı yeniden başlatmayı unutmayın.

1.       DatabaseName yazan yerleri suspect olmuş veritabanınızın adıyla değiştirin ve komutu çalıştırın.
             EXEC SP_RESETSTATUS ’DatabaseName’;
             ALTER DATABASE DatabaseName SET EMERGENCY
             DBCC CHECKDB(’DatabaseName’)
             ALTER DATABASE DatabaseName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
             DBCC CHECKDB (’DatabaseName’, REPAIR_ALLOW_DATA_LOSS)
             ALTER DATABASE DatabaseName SET MULTI_USER
 
            2.       Yukarıdaki kodlardan sonuç alamadıysanız bunları deneyin :
DBCC CHECKDB (‘DatabaseName’, REPAIR_ALLOW_DATA_LOSS)
DBCC CHECKDB (‘DatabaseName’)
DBCC CHECKDB (‘DatabaseName’, REPAIR_REBUILD) 
 
3.       Ve üçüncü olarak iki seçenek de fayda etmediyse :
USE master;
GO
EXEC sp_resetstatus’DatabaseName’;
USE DatabaseName;
DBCC CHECKDB WITH NO_INFOMSGS;
 
4.       Son olarak seçeneğimiz kalmadığında aşağıdakileri kullanabiliriz
USE master;
GO
ALTER DATABASE DatabaseName SET EMERGENCY
ALTER DATABASE DatabaseName SET SINGLE_USER
DBCC CHECKDB(DatabaseName, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS;
USE DatabaseName;
DBCC CHECKDB WITH NO_INFOMSGS;

 


Yorum yapabilmek için giriş yapınız

Giriş Yap

Sitede Ara

En Çok Okunanlar

Android Cihazlara POP3 E-Posta Hesabı Kurulumu (1773)
Windows simgelerinde beyaz ikon sorunu ve çözümü (1362)
SQL REPLACE() Kullanımı (909)
Yerel Ağ Bağlantısına girmek istediğimde ''Bağlantı özelliklerine erişmek için yeterli yetkiniz yok.Yöneticinize başvurun'' uyarısı.. (529)
Access violation at address 0518fde4 inmodule NETINFO.dll Read of adress 00000000 (472)
CMD komutları ile Windows Aktivasyonu (381)
PatchCleaner v1.4.2.0 indir Windows Installer Temizleme Programı (373)
Bedava Netflix Hesapları 2022 (Ücretsiz Premium Hesaplar) (370)
MailEnable Webmail Unknown or Disabled User Hatası (362)
Server communication failure. Please refresh your browser and try again. (342)
Turbobit Premium Hesaplar Bedava Güncel Üyelikler 2022 (337)
There is already an object named in the database Cozum (334)
Turbobit Premium Hesaplar Güncel Liste 2022 (327)
Windows 10 Gereksiz Servislerin Kapatılması - Resimli Anlatım (309)
Yazıcı hata kodu 0x0000011b sorun ve cozumu (306)
Windows Bileşen Deposu (WinSxS) Klasörünü Temizleme (293)
Adobe After Effects CC 2019 Full İndir – v16.1.1.4 (245)
Linq ile inner Join Kullanımı (243)
ASP.NET MVC Email Doğrulama Sayfası (Verification) (238)
Dinozor Nesline Son Veren Silen Asteroit Felaketi, Nasıl Gerçekleşti? (228)
3 Adımda Server olay loglarının silinmesi (214)
Windows 10 durdurulabilecek hizmetler (206)
Bedava Turbobit Premium Hesap 2022 (%100 Güncel Hesaplar) (196)
Visual Studio 2017 Dil Ekleme/Değiştirme (191)
Windows Server Çoklu Oturum Açma Ayarı (175)

Son Yorumlar