Veritabani Hatalarini Düzeltme DBCC CHECKDB

24 Ağustos 2019 Cumartesi

Merhaba aktif durumda kullandiginiz veritabaninda çesitli olarak hatalara maruz kalarak çalisamaz durumu gelebilir bu durumda DBCC CHECKDB Parametre olarak verilen veritabaninin bütünlük kontrolleri yapilir. Veritabaninda olusturulan her index içerigi dogrulanir, FILESTREAM kullaniliyorsa metadata ve dosya sistemi arasindaki uyumluluk kontrol edilir. Örnek veritabanimizin adi= MIRSAD olsun. Kullanacagimiz SQL komutlari;

DBCC CHECKDB MIRSAD

Eger tabloda veya index’lerde bulunan verilerde herhangi bir sorun varsa bunu mesaj penceresinde görüyor olacaktik. Mesajlarin sonuna indigimizde ; "CHECKDB found 0 allocation errors and 0 consistency errors in database ‘MIRSAD’. DBCC execution completed. If DBCC printed error messages, contact your system administrator." olacaktir.

CHECKDB islemine tâbi tutulacak veritabanda bulunan Non-Clustered index’lerin kontrol islemine tâbi tutulmamasi için NOINDEX parametresini kullanabiliriz. Index’ler kontrol edilmeyecegi için CHECKDB islemi daha hizli sonlanacaktir.

DBCC CHECKDB ('MIRSAD',NOINDEX)

REPAIR_ALLOW_DATA_LOSS – REPAIR_FAST – REPAIR_REBUILD : CHECKDB islemi sonrasinda tablo veya index’lerde kayit sorunu varsa bu kayitlarda olusan hatalari düzeltmek için kullanilan komutlardir. Bu komutlar kullanilmadan önce veritabani Single User Mode alinmis olmalidir.


REPAIR_ALLOW_DATA_LOSS : DBCC CHECKDB isleminde raporlanan hatalari düzeltmek için kullanilir. Düzeltme isleminde veri kaybi meydana gelebilir. Bu komut çalistirilmadan önce yedek alinmasi yarariniza olacaktir.

ALTER DATABASE MIRSAD SET SINGLE_USER

GO

DBCC CHECKDB('MIRSAD',REPAIR_ALLOW_DATA_LOSS)

GO

ALTER DATABASE MIRSAD SET MULTI_USER

REPAIR_FAST : Veri kaybi olmadan hizlica hatalari düzeltmek için kullanilir.

ALTER DATABASE MIRSAD SET SINGLE_USER

GO

DBCC CHECKDB('MIRSAD',REPAIR_FAST)

GO

ALTER DATABASE MIRSAD SET MULTI_USER

 

REPAIR_REBUILD: Veri kaybi olmadan hatalari düzelmek için kullanilir. Bu islemde index rebuild yapilmasi veya index’te eksik kayitlarin index’e dahil edilmesi islemi vb.

ALTER DATABASE MIRSAD SET SINGLE_USER

GO

DBCC CHECKDB('MIRSAD',REPAIR_REBUILD)

GO

ALTER DATABASE MIRSAD SET MULTI_USER

ESTIMATEONLTY : DBCC CHECKDB islemi için TempDB‘de kullanilacak olan alanin tahmini degerini verir.

DBCC CHECKDB('MIRSAD') WITH ESTIMATEONLY

PHYSICAL_ONLY : DBCC CHECKDB isleminin kisitli halidir. Daha kisa sürdügü için Production ortamlarinda kullanilabilir.

DBCC CHECKDB('MIRSAD') WITH PHYSICAL_ONLY

TABLOCK : CHECKDB isleminde TABLOCK parametresi islemin daha kisa sürmesini saglar ancak veritabanina erisimi bir süreligine durdurur.

DBCC CHECKDB('MIRSAD') WITH TABLOCK

NO_INFOMSGS: CHECKDB isleminde bilgi mesajlarinin gösterilmemesi için kullanabilirsiniz.

DBCC CHECKDB ('MIRSAD') WITH NO_INFOMSGS

ALL_ERRORMSGS: Tüm mesajlarin listelenmesi için kullanilir.

DBCC CHECKDB ('MIRSAD') WITH ALL_ERRORMSGS

Sadece hata mesajlarinin listelenmesini isterseniz;

DBCC CHECKDB ('MIRSAD') WITH NO_INFOMSGS,ALL_ERRORMSGS

 

NOT: Veritabanlarinin saglikli çalisabilmesi için belli araliklarla CHECKDB kontrollerinin yapilmasi önerilir. Maintenance Plan ‘iniza eklemenizi tavsiye ederim.

 

 

 

 

 

Bunları da beğenebilirsiniz.