DBCC CHECKCATALOG, SQL Server’da kullanılan bir veritabanı bütünlük denetim komutudur. Bu komut, belirtilen veritabanındaki sistem metadata tabloları kontrol ederek herhangi bir tutarsızlık veya hatanın var olup olmadığını tespit eder.
Sistem katalogları, veritabanında bulunan tablolar, indeksler, view, ilişkiler ve diğer nesnelerle ilgili meta verileri tutan sistem tablolarıdır. Bu komut, bu meta verilerin birbiriyle uyumlu ve doğru olduğunu garanti altına almak için kullanılır.
DBCC CHECKCATALOG şunları kontrol eder:
1. Sistem Tablolarının Tutarlılığı:
Veritabanındaki sistem tabloları arasında tutarlılık olup olmadığını denetler.
Örneğin, bir tablo için bir indeks tanımı varsa, o indeksin fiziksel olarak mevcut olup olmadığını kontrol eder.
2. Objeler Arası Uyum:
Tablolar, görünümler, saklı yordamlar gibi nesnelerin tanımlarının sistem kataloglarında doğru şekilde kaydedilip kaydedilmediğini kontrol eder.
Örneğin, bir tablo silinmiş ancak bu tabloya ait meta veri hala kataloglarda varsa, bu bir tutarsızlıktır.
3. Geçersiz Tanımlar:
Sistem kataloglarındaki bozulmalar veya eksik tanımlamaları tespit eder. Örneğin: Bozuk veya eksik foreign key tanımları. Bir tablo için var olduğu belirtilen, fakat fiziksel olarak olmayan bir nesne.
4. Sistem Meta Verilerinin Doğruluğu:
Sistem nesnelerinin meta verilerinin (adlar, türler, boyutlar gibi) doğru olup olmadığını doğrular.
Temel olarak bir veritabanında DBCC CHECKCATALOG şu şekilde çalıştırılır:
DBCC CHECKCATALOG ('VeritabanıAdı');
Eğer veritabanı adı belirtilmezse, o anki bağlı olunan veritabanı için kontrol gerçekleştirilir:
USE MyDatabase;
DBCC CHECKCATALOG;
Eğer sistem kataloglarında hata bulunmazsa, şu mesaj görüntülenir:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Eğer bir hata bulunursa, bu hatalar ayrıntılı olarak listelenir. Örneğin:
Msg 3853, Level 16, State 1, Line 1
Catalog consistency check failed for database ‘MyDatabase’.
Hangi Durumlarda Kullanılır?
1. Veritabanında tablolar, indeksler veya nesnelerle ilgili tutarsızlıklar veya bozulmalar olduğundan şüpheleniliyorsa.
2. Veritabanı yedeklemesi alınıp yeni bir sunucuya taşındığında meta verilerin tutarlılığını kontrol etmek için.
3. DBCC CHECKDB, genelde fiziksel ve mantıksal bozulmaları kontrol ederken, DBCC CHECKCATALOG daha çok sistem kataloglarının tutarlılığına odaklanır. İkisi birden kullanılarak veritabanı sağlığı daha detaylı kontrol edilebilir.
Not: Sadece meta veri kataloglarını kontrol ettiği için, diğer DBCC komutlarına (örneğin, DBCC CHECKDB) kıyasla daha az kaynak tüketir ve hızlı çalışır.
Not: Çalışma sırasında sistemdeki diğer işlemleri genellikle etkilemez.
Not:Tempdb veritabanında çalıştıramayız. Filestream verinin tutarlığını kontrol edilmez.
Dikkat Edilmesi Gerekenler
1. Eğer bir hata bulunursa ve meta veriler tutarsız ise, sistemde ciddi problemler oluşabilir. Hataları düzeltmeden önce yedek alınmalıdır.
2. DBCC CHECKCATALOG yalnızca sorunları tespit eder, düzeltmez. Hatalar manuel olarak veya başka araçlarla çözülmelidir.
3. Bu komutu çalıştırmak için genellikle sysadmin veya db_owner rolüne sahip olmanız gerekir.
DBCC CHECKCATALOG, SQL Server’daki sistem kataloglarının tutarlılığını kontrol etmek için kullanılan bir araçtır. Sistem meta verilerinde bozulmaların tespiti için hayati öneme sahiptir. Ancak, tespit ettiği sorunları çözmez; sadece uyarı verir. Bu nedenle, bulduğu hataların düzeltilmesi için veritabanı yöneticisi tarafından manuel müdahale gerekebilir.
Bu makalede DBCC CHECKCATALOG komutunu detaylı bir şekilde görmüş olduk. Başka bir makalede görüşmek dileğiyle.
“De ki: Ey Rabbim! İlmimi artır.” Taha-114