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.