SQL Server Msg 605, SQL Sunucuzunda aşağıdaki gibi Msg 605 hatası aldıysanız aşağıdaki bilgilerle bu hatadan kurtulabilirsiniz.
Msg 605, Level 21, State 3, Line 1
Attempt to fetch logical page (1:4646581) in database 37 failed. It belongs to allocation unit 2432658505728 not to 656190132256768.
Msg 5243, Level 22, State 8, Line 1
An inconsistency was detected during an internal operation. Please contact technical support.
Yukarudaki gibi bir hata mesajı ile karşılaştığınızda yapılamsı gereken adımları izleyelim.
Öncelikle page numaralarını kesin olarak bilmeniz gerekiyor bunun için DBCC PAGE komutunu kullanın.
DBCC TRACEON(3604)
DBCC PAGE(‘VeriTabanıAdı’,1, 4646581,3)
DBCC TRACEOFF(3604)
Robots.txt Nedir? Nasıl Kullanılır? Robots.txt önemi nedir?
NOTE: Parametreleri DBCC PAGE komutunun çıktısındaki alanlardan öğrenebilirsiniz. ( Bold olanlar 3 ) 0,1,2,3. Farklı iki opsiyon daha seçebilirsiniz. DBCC Page parametreleri şeklinde aratıp bulabilirsiniz.
Full Backup üzerinden hasarlı page alanının restore edilmesi için aşağıdaki adımları izleyebilirsiniz.
RESTORE DATABASE VeritabaniAdi
PAGE = ‘1:4646581’
FROM DISK = ‘D:\Yedek-Daily.bak’
WITH NORECOVERY
Genel olarak Hatayı düzeltme için aşağıdaki adımları izleyebilirsiniz.
Yedekleri kullanmadan da hasarı DBCC komutu ile onarabilirsiniz.
DBCC CHECKDB (‘VeritabaniAdi’) WITH NO_INFOMSGS
GO
Bu işlem sonucunda size hasarlı objelerin listeleri gösterilecektir. Bu hasarları toplu olarak ınarmak için REPAIR_REBUILD parametresini kullanabilirsiniz.
Note: Buna rağmen sorun çözülmez ise REPAIR_ALLOW_DATA_LOSS, parametresini kullanabilirsiniz fakat bu en son seçeneğiniz olmalıdır. Bu parametre veri kayıplarını kabul ederek onarım yap demektir.
!!! Eğer Yine aynı hataları almaya devam ederseniz son çözüm olarak veri kayıplarını kabul ederek işlem yaptırabilirsiniz. !!!
ALTER DATABASE VeritabaniAdi SET SINGLE_USER
GO
DBCC CHECKDB(‘VeritabaniAdi‘, REPAIR_ALLOW_DATA_LOSS)
GO
ALTER database VeritabaniAdi SET MULTI_USER
GO
SQL Server Msg 605 Tek Tablo için DBCC Kullanımı
Repair işlemini Eğer sadece bir tablonuzda hasar var ise veya hasarlı tabloları biliyorsanız tüm veritabanına değilde sadece hasarlı tablolalarada uygulayabilirsiniz. Yine Sinle Mod’a geçip Tek tablo onarımı için aşağıdaki komutu kullanabilirsiniz. REPAIR_REBUILD hatayı düzeltmez ise REPAIR_ALLOW_DATA_LOSS parametresini deneyiniz.
DBCC CHECKTABLE(TabloAdi, REPAIR_REBUILD )
GO
“Önemli Uyarı: Yukarıda belirtilen işlemleri Tam yedek almadan kesinlikle yapmayınız. Sistem yönetimi konusunda deneyiminiz yok ise bu komutları Canlı veritabanlarınızda asla denemeyiniz! “