Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Tabloyu veya dizine alınan görünümü oluşturan tüm sayfaların ve yapıların bütünlüğünü denetler.
Transact-SQL söz dizimi kuralları
Sözdizimi
DBCC CHECKTABLE
(
table_name | view_name
[ , { NOINDEX | index_id }
| , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD }
]
)
[ WITH
{ [ ALL_ERRORMSGS ]
[ , EXTENDED_LOGICAL_CHECKS ]
[ , NO_INFOMSGS ]
[ , TABLOCK ]
[ , ESTIMATEONLY ]
[ , { PHYSICAL_ONLY | DATA_PURITY } ]
[ , MAXDOP = number_of_processors ]
}
]
Bağımsız değişken
| table_nameview_name
Bütünlük denetimlerinin çalıştırıldığı tablo veya dizinli görünüm. Tablo veya görünüm adları tanımlayıcıları için kurallarla uyumlu olmalıdır.
NOINDEX
Kullanıcı tabloları için kümelenmemiş dizinlerin yoğun denetimlerinin gerçekleştirilmemesi gerektiğini belirtir. Bu, genel yürütme süresini azaltır.
NOINDEX
sistem tablolarını etkilemez çünkü bütünlük denetimleri her zaman tüm sistem tablosu dizinlerinde gerçekleştirilir.
index_id
Bütünlük denetimlerinin çalıştırıldığı dizin tanımlama (KIMLIK) numarası.
index_id belirtilirse, DBCC CHECKTABLE
yığın veya kümelenmiş dizinle birlikte yalnızca bu dizinde bütünlük denetimleri çalıştırır.
REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
DBCC CHECKTABLE
bulunan hataları onardığını belirtir. Onarım seçeneğini kullanmak için veritabanının tek kullanıcılı modda olması gerekir.
ONAR_VERİ_KAYBINA_İZİN_VER
Bildirilen tüm hataları onarmaya çalışır. Bu onarımlar veri kaybına neden olabilir.
Hızlı Onarım
Söz dizimi yalnızca geriye dönük uyumluluk için korunur. Hiçbir onarım eylemi gerçekleştirilmez.
Tamir_Yeniden İnşa
Veri kaybı olasılığı olmayan onarımlar gerçekleştirir. Bu, kümelenmemiş dizinlerdeki eksik satırları onarma gibi hızlı onarımları ve dizini yeniden derleme gibi daha fazla zaman alan onarımı içerebilir.
Bu bağımsız değişken FILESTREAM verileriyle ilgili hataları onarmaz.
Önemli
ONARIM seçeneklerini yalnızca son çare olarak kullanın. Hataları onarmak için yedekten geri yüklemenizi öneririz. Onarım işlemleri, tablolarda veya tablolar arasında mevcut olabilecek kısıtlamaları dikkate almaz. Belirtilen tablo bir veya daha fazla kısıtlamaya dahilse, bir onarım işleminden sonra DBCC CHECKCONSTRAINTS
çalıştırmanızı öneririz. REPAIR kullanmanız gerekiyorsa, kullanılacak onarım düzeyini bulmak için DBCC CHECKTABLE
bir onarım seçeneği olmadan çalıştırın.
REPAIR_ALLOW_DATA_LOSS
düzeyini kullanıyorsanız, bu seçenekle DBCC CHECKTABLE
çalıştırmadan önce veritabanını yedeklemenizi öneririz.
ALL_ERRORMSGS
Sınırsız sayıda hata görüntüler. Tüm hata iletileri varsayılan olarak görüntülenir. Bu seçeneği belirtmenin veya atlamanın hiçbir etkisi yoktur.
EXTENDED_LOGICAL_CHECKS
Uyumluluk düzeyi SQL Server 2008'de (10.0.x) sunulan 100 ise, dizinli görünümde, XML dizinlerinde ve uzamsal dizinlerde mantıksal tutarlılık denetimleri gerçekleştirir.
Daha fazla bilgi için bu makalenin devamında yer alan Açıklamalar bölümündeki Dizinler Mantıksal Tutarlılık Denetimleri Gerçekleştirme bölümüne bakın.
NO_INFOMSGS
Tüm bilgilendirme iletilerini gizler.
TABLOCK
DBCC CHECKTABLE
iç veritabanı anlık görüntüsü kullanmak yerine paylaşılan tablo kilidi almasına neden olur.
TABLOCK
, DBCC CHECKTABLE
yoğun yük altındaki bir tabloda daha hızlı çalışmasına neden olur, ancak DBCC CHECKTABLE
çalışırken tabloda kullanılabilen eşzamanlılığı azaltır.
TAHMINE GÖRE
tempdb
diğer tüm belirtilen seçeneklerle çalıştırmak için gereken tahmini DBCC CHECKTABLE
alanını görüntüler.
PHYSICAL_ONLY
Denetimi sayfanın fiziksel yapısının, kayıt üst bilgilerinin ve B ağaçlarının fiziksel yapısının bütünlüğüyle sınırlar. Tablonun fiziksel tutarlılığı için küçük bir ek yük denetimi sağlamak üzere tasarlanan bu denetim, bozuk sayfaları ve verilerin güvenliğini tehlikeye atabilecek yaygın donanım hatalarını da algılayabilir.
DBCC CHECKTABLE
tam çalıştırması önceki sürümlerden çok daha uzun sürebilir. Bu davranış aşağıdaki nedenlerden dolayı oluşur:
- Mantıksal denetimler daha kapsamlıdır.
- Denetlenecek temel yapılardan bazıları daha karmaşıktır.
- Yeni özellikleri içeren birçok yeni denetim kullanıma sunulmuştur.
Not
Belgelerde genellikle dizinlere başvuruda B ağacı terimi kullanılır. Rowstore dizinlerinde Veritabanı Altyapısı bir B+ ağacı uygular. Bu, bellek için iyileştirilmiş tablolardaki columnstore dizinleri veya dizinleri için geçerli değildir. Daha fazla bilgi için SQL Server ve Azure SQL dizin mimarisi ve tasarım kılavuzuna bakın.
Bu nedenle, PHYSICAL_ONLY
seçeneğinin kullanılması büyük tablolarda DBCC CHECKTABLE
için çok daha kısa bir çalışma süresine neden olabilir ve bu nedenle üretim sistemlerinde sık kullanım için önerilir. Yine de DBCC CHECKTABLE
tam çalıştırmasının düzenli aralıklarla gerçekleştirilmesi önerilir. Bu çalıştırmaların sıklığı, tek tek işletmelere ve üretim ortamlarına özgü faktörlere bağlıdır.
PHYSICAL_ONLY
her zaman NO_INFOMSGS anlamına gelir ve onarım seçeneklerinden herhangi biriyle birlikte kullanılamaz.
Not
PHYSICAL_ONLY
belirtilmesi, DBCC CHECKTABLE
FILESTREAM verilerinin tüm denetimlerini atlamasına neden olur.
DATA_PURITY
DBCC CHECKTABLE
geçerli olmayan veya aralık dışında olan sütun değerlerinin tablosunu denetlemesine neden olur. Örneğin, DBCC CHECKTABLE
datetime veri türü için kabul edilebilir aralıktan büyük veya daha küçük tarih ve saat değerlerine sahip sütunları algılar; veya geçerli olmayan ölçek veya duyarlık değerlerine sahip ondalık veya yaklaşık sayısal veri türü sütunlarını.
Sütun-değer bütünlüğü denetimleri varsayılan olarak etkindir ve DATA_PURITY
seçeneğini gerektirmez. SQL Server'ın önceki sürümlerinden yükseltilen veritabanları için, belirli bir tablodaki hataları bulmak ve düzeltmek için DBCC CHECKTABLE WITH DATA_PURITY
kullanabilirsiniz; ancak, DBCC CHECKDB WITH DATA_PURITY
veritabanında hatasız çalıştırılana kadar tablodaki sütun-değer denetimleri varsayılan olarak etkinleştirilmez. Bundan sonra DBCC CHECKDB
ve DBCC CHECKTABLE
varsayılan olarak sütun-değer bütünlüğünü denetleyin.
Bu seçenek tarafından bildirilen doğrulama hataları DBCC onarım seçenekleri kullanılarak düzeltilemiyor. Bu hataları el ile düzeltme hakkında bilgi için bkz. DBCC CHECKDB tarafından bildirilen veritabanı tutarlılığı hatalarını giderme.
PHYSICAL_ONLY
belirtilirse, sütun bütünlüğü denetimleri gerçekleştirilmez.
MAXDOP
için geçerlidir: SQL Server 2014 (12.x) Service Pack 2 ve sonraki sürümleri.
deyimi için sp_configure
yapılandırma seçeneğini geçersiz kılar. MAXDOP, sp_configure
ile yapılandırılan değeri aşabilir. MAXDOP, Resource Governor ile yapılandırılan değeri aşarsa, Veritabanı Altyapısı ALTER WORKLOAD GROUP (Transact-SQL) bölümünde açıklanan Resource Governor MAXDOP değerini kullanır. MAXDOP sorgu ipucunu kullandığınızda, en yüksek paralellik derecesi yapılandırma seçeneğiyle kullanılan tüm semantik kurallar uygulanabilir. Daha fazla bilgi için bkz. En yüksek paralellik derecesini yapılandırma Sunucu Yapılandırma Seçeneği.
Not
MAXDOP sıfır olarak ayarlanırsa, sunucu en yüksek paralellik derecesini seçer.
Açıklamalar
Not
Veritabanındaki her tabloda DBCC CHECKTABLE
gerçekleştirmek için DBCC CHECKDBkullanın.
Belirtilen tablo için DBCC CHECKTABLE
aşağıdakileri denetler:
- Dizin, satır içi, LOB ve satır taşması veri sayfaları doğru şekilde bağlanır.
- Dizinler doğru sıralama düzenlerindedir.
- İşaretçiler tutarlıdır.
- Her sayfadaki veriler makuldür ve hesaplanmış sütunlar içerir.
- Sayfa uzaklıkları makul.
- Temel tablodaki her satır, her bir kümelenmemiş dizinde eşleşen bir satıra sahiptir ve tam tersi de geçerlidir.
- Bölümlenmiş tablo veya dizindeki her satır doğru bölümdedir.
- FILESTREAM kullanarak dosya sisteminde varbinary(max) verileri depolarken dosya sistemi ile tablo arasında bağlantı düzeyinde tutarlılık.
Dizinlerde mantıksal tutarlılık denetimleri gerçekleştirme
Dizinlerde mantıksal tutarlılık denetimi, veritabanının uyumluluk düzeyine göre aşağıdaki gibi değişir:
Uyumluluk düzeyi 100 (SQL Server 2008 (10.0.x)) veya üzeriyse:
NOINDEX
belirtilmediği sürece,DBCC CHECKTABLE
tek bir tabloda ve tüm kümelenmemiş dizinlerinde hem fiziksel hem de mantıksal tutarlılık denetimleri gerçekleştirir. Ancak XML dizinlerinde uzamsal dizinler ve dizinlenmiş görünümlerde varsayılan olarak yalnızca fiziksel tutarlılık denetimleri gerçekleştirilir.WITH EXTENDED_LOGICAL_CHECKS
belirtilirse, mantıksal denetimler dizinli görünümde, XML dizinlerinde ve uzamsal dizinlerde gerçekleştirilir ve burada bulunur. Varsayılan olarak, fiziksel tutarlılık denetimleri mantıksal tutarlılık denetimleri öncesinde gerçekleştirilir.NOINDEX
de belirtilirse, yalnızca mantıksal denetimler gerçekleştirilir.Bu mantıksal tutarlılık denetimleri, dizin nesnesinin iç dizin tablosunu başvurduğunu kullanıcı tablosuyla çapraz denetler. Satırları bulmak için iç ve kullanıcı tablolarının tam kesişimini gerçekleştirmek üzere bir iç sorgu oluşturulur. Bu sorguyu çalıştırmanın performans üzerinde çok yüksek bir etkisi olabilir ve ilerleme durumu izlenemez. Bu nedenle,
WITH EXTENDED_LOGICAL_CHECKS
yalnızca fiziksel bozulmayla ilgili olmayan dizin sorunlarından şüpheleniyorsanız veya sayfa düzeyi sağlama toplamları kapatılmışsa ve sütun düzeyinde donanım bozulmasından şüpheleniyorsanız belirtmeniz önerilir.Dizin filtrelenmiş bir dizinse,
DBCC CHECKTABLE
dizin girdilerinin filtre koşulunu karşılayıp karşılamadığını doğrulamak için tutarlılık denetimleri gerçekleştirir.
SQL Server 2016'dan (13.x) başlayarak, pahalı ifade değerlendirmelerinden kaçınmak için kalıcı hesaplanan sütunlar, UDT sütunları ve filtrelenmiş dizinler üzerinde ek denetimler varsayılan olarak çalışmaz. Bu değişiklik, bu nesneleri içeren veritabanlarında
CHECKTABLE
süresini büyük ölçüde azaltır. Ancak, bu nesnelerin fiziksel tutarlılık denetimleri her zaman tamamlanır. YalnızcaEXTENDED_LOGICAL_CHECKS
seçenek belirtildiğinde,EXTENDED_LOGICAL_CHECKS
seçeneğinin bir parçası olarak mantıksal denetimlerin (dizinli görünüm, XML dizinleri ve uzamsal dizinler) yanı sıra gerçekleştirilen ifade değerlendirmeleri de vardır.Uyumluluk düzeyi 90 (SQL Server 2005 (9.x)) veya daha azsa,
NOINDEX
belirtilmediği süreceDBCC CHECKTABLE
tek bir tabloda veya dizine alınan görünümde ve tüm kümelenmemiş ve XML dizinlerinde hem fiziksel hem de mantıksal tutarlılık denetimleri gerçekleştirir. Uzamsal dizinler desteklenmez.
Veritabanının uyumluluk düzeyini öğrenmek için
- Veritabanı Uyumluluk Düzeyini Görüntüleme veya Değiştirme
İç veritabanı anlık görüntüsü
DBCC CHECKTABLE
, bu denetimleri gerçekleştirmek için gerekli işlem tutarlılığını sağlamak için bir iç veritabanı anlık görüntüsü kullanır. Daha fazla bilgi için veritabanı anlık görüntüsünün seyrek boyutunu görüntüleme (Transact-SQL) ve DBCC (Transact-SQL)DBCC iç veritabanı anlık görüntü kullanımı bölümüne bakın.
Anlık görüntü oluşturulamıyorsa veya TABLOCK
belirtilirse, DBCC CHECKTABLE
gerekli tutarlılığı elde etmek için paylaşılan bir tablo kilidi alır.
Not
DBCC CHECKTABLE
tempdb
karşı çalıştırılırsa, paylaşılan bir tablo kilidi almalıdır. Bunun nedeni, performans nedenleriyle veritabanı anlık görüntülerinin tempdb
üzerinde kullanılamamasıdır. Bu, gerekli işlem tutarlılığının alınamadığı anlamına gelir.
FILESTREAM verilerini denetleme ve onarma
Bir veritabanı ve tablo için FILESTREAM etkinleştirildiğinde, isteğe bağlı olarak dosya sisteminde varbinary(max) ikili büyük nesneleri (BLOB' lar) depolayabilirsiniz. DBCC, dosya sisteminde BLOB'ları depolayan bir tabloda DBCC CHECKTABLE
kullanırken dosya sistemi ile veritabanı arasındaki bağlantı düzeyinde tutarlılığı denetler.
Örneğin, bir tabloda FILESTREAM özniteliğini kullanan varbinary(max) sütunu varsa, DBCC CHECKTABLE
dosya sistemi dizinleri ile dosyalar ile tablo satırları, sütunları ve sütun değerleri arasında bire bir eşleme olup olmadığını denetler.
DBCC CHECKTABLE
seçeneğini belirtirseniz REPAIR_ALLOW_DATA_LOSS
bozulmayı onarabilir. FILESTREAM bozulmasını onarmak için DBCC, dosya sistemi verileri eksik olan tüm tablo satırlarını siler ve tablo satırı, sütun veya sütun değeriyle eşleşmeyen dizinleri ve dosyaları siler.
Nesneleri paralel olarak denetleme
Varsayılan olarak, DBCC CHECKTABLE
nesneleri paralel olarak denetler. Paralellik derecesi sorgu işlemcisi tarafından otomatik olarak belirlenir. En yüksek paralellik derecesi, paralel sorgular ile aynı şekilde yapılandırılır. DBCC denetimi için kullanılabilen en fazla işlemci sayısını kısıtlamak için sp_configurekullanın. Daha fazla bilgi için bkz. En yüksek paralellik derecesini yapılandırma Sunucu Yapılandırma Seçeneği.
Paralel denetim, İzleme Bayrağı 2528 kullanılarak devre dışı bırakılabilir. Daha fazla bilgi için bkz. İzleme Bayrakları (Transact-SQL).
Not
DBCC CHECKTABLE
işlemi sırasında, bayt sıralı kullanıcı tanımlı tür sütununda depolanan baytlar, kullanıcı tanımlı tür değerinin hesaplanan serileştirmesine eşit olmalıdır. Bu doğru değilse, DBCC CHECKTABLE
yordamı bir tutarlılık hatası bildirecektir.
Not
Bu özellik SQL Server'ın her sürümünde kullanılamaz. Daha fazla bilgi için Sürümleri ve SQL Server 2022desteklenen özelliklerinin RDBMS yönetilebilirliği bölümünde paralel tutarlılık denetimi bölümüne bakın.
DBCC hata iletilerini anlama
DBCC CHECKTABLE
komutu tamamlandıktan sonra SQL Server hata günlüğüne bir ileti yazılır. DBCC komutu başarıyla yürütülürse, ileti başarıyla tamamlandığını ve komutun çalıştırıldığını gösterir. DBCC komutu bir hata nedeniyle denetimi tamamlamadan önce durursa, ileti komutun sonlandırıldığını, durum değerini ve komutun çalıştırıldığı süreyi gösterir. Aşağıdaki tabloda iletiye dahil edilebilecek durum değerleri listelenmiştir ve açıklanmaktadır.
Devlet | Açıklama |
---|---|
0 | Hata numarası 8930 oluşturuldu. Bu, DBCC komutunun sonlandırmasına neden olan bir meta veri bozulmasını gösterir. |
1 | Hata numarası 8967 oluşturuldu. bir iç DBCC hatası oluştu. |
2 | Acil durum modu veritabanı onarımı sırasında bir hata oluştu. |
3 | Bu, DBCC komutunun sonlandırmasına neden olan bir meta veri bozulmasını gösterir. |
4 | Onay veya erişim ihlali algılandı. |
5 | DBCC komutunu sonlandıran bilinmeyen bir hata oluştu. |
Hata raporlama
SQL Server SQLDUMP<nnnn>.txt
dizininde, LOG
bir bozulma hatası algılandığında bir mini döküm dosyası (DBCC CHECKTABLE
) oluşturulur. sql server örneği için Özellik Kullanımı veri toplama ve Hata Raporlama özellikleri etkinleştirildiğinde, dosya otomatik olarak Microsoft'a iletilir. Toplanan veriler SQL Server işlevselliğini geliştirmek için kullanılır.
Döküm dosyası, DBCC CHECKTABLE
komutunun sonuçlarını ve ek tanılama çıkışını içerir. Dosya isteğe bağlı erişim denetimi listelerini (DACL' ler) kısıtlamıştır. Erişim, SQL Server hizmet hesabı ve sysadmin rolünün üyeleriyle sınırlıdır. Varsayılan olarak sysadmin rolü, Windows BUILTIN\Administrators grubunun ve yerel yönetici grubunun tüm üyelerini içerir. Veri toplama işlemi başarısız olursa DBCC komutu başarısız olmaz.
Hataları düzeltme
DBCC CHECKTABLE
herhangi bir hata bildirirse, REPAIR seçeneklerinden biriyle REPAIR çalıştırmak yerine veritabanını veritabanı yedeğinden geri yüklemenizi öneririz. Yedekleme yoksa, REPAIR komutunu çalıştırmak bildirilen hataları düzeltebilir. Kullanılacak REPAIR seçeneği, bildirilen hatalar listesinin sonunda belirtilir. Ancak, REPAIR_ALLOW_DATA_LOSS
seçeneğini kullanarak hataların düzeltilmesi için bazı sayfaların ve dolayısıyla verilerin silinmesi gerekebilir.
Onarım, kullanıcının yapılan değişiklikleri geri almasına izin vermek için bir kullanıcı işlemi altında gerçekleştirilebilir. Onarımlar geri alınırsa, veritabanı yine hatalar içerir ve bir yedekten geri yüklenmelidir. Tüm onarımları tamamladıktan sonra veritabanını yedekleyin.
Sonuç kümeleri
DBCC CHECKTABLE
aşağıdaki sonuç kümesini döndürür. Yalnızca tablo adını veya seçeneklerden herhangi birini belirtirseniz aynı sonuç kümesi döndürülür.
DBCC results for 'HumanResources.Employee'.
There are 288 rows in 13 pages for object 'Employee'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC CHECKTABLE
, ESTIMATEONLY seçeneği belirtilirse aşağıdaki sonuç kümesini döndürür:
Estimated TEMPDB space needed for CHECKTABLES (KB)
--------------------------------------------------
21
(1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
İzinler
Kullanıcının tabloya sahip olması veya sysadmin sabit sunucu rolünün, db_owner sabit veritabanı rolünün veya db_ddladmin sabit veritabanı rolünün üyesi olması gerekir.
Örnekler
A. Belirli bir tabloyu denetleme
Aşağıdaki örnek, AdventureWorks2022 veritabanındaki HumanResources.Employee
tablosunun veri sayfası bütünlüğünü denetler.
DBCC CHECKTABLE ('HumanResources.Employee');
GO
B. Tabloda düşük ek yük denetimi gerçekleştirme
Aşağıdaki örnek, AdventureWorks2022 veritabanındaki Employee
tablosunda düşük ek yük denetimi gerçekleştirir.
DBCC CHECKTABLE ('HumanResources.Employee') WITH PHYSICAL_ONLY;
GO
C. Belirli bir dizini denetleme
Aşağıdaki örnek, sys.indexes
erişilerek elde edilen belirli bir dizini denetler.
DECLARE @indid int;
SET @indid = (SELECT index_id
FROM sys.indexes
WHERE object_id = OBJECT_ID('Production.Product')
AND name = 'AK_Product_Name');
DBCC CHECKTABLE ('Production.Product',@indid);