dbcc checktable (Transact-SQL)
Tüm sayfaları ve tablo veya dizinli görünümoluşturan yapıların bütünlük denetler.
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 } ]
}
]
Bağımsız değişkenler
table_name | view_name
tablo veya dizinli görünüm için bütünlük denetimleri çalıştırmak değil.Tablo veya Görünüm adları gerekir kurallarını karşılayan tanımlayıcıları.NOINDEX
Yoğun denetimleri kullanıcı tablolar için kümelenmemiş dizinleri değil gerçekleştirilmesi gerektiğini belirtir.Bu genel yürütme saatazaltır.bütünlük denetimleri her zaman tüm sistem tablosu dizinler üzerinde gerçekleştirilir çünkü NOINDEX sistem tabloları etkilemez.index_id
Dizin kimliği (ID), bütünlük denetimleri çalıştırmak numarasıdır.index_id Belirtilmişse, dbcc checktable bütünlük denetimleri yalnızca yığın veya kümelenmiş dizinbirlikte bu dizin üzerinde çalışacak.REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
dbcc checktable bulunan hataları onarmak belirtir.Bir onarım seçeneğini kullanmak için veritabanı tek kullanıcı moduolması gerekir.REPAIR_ALLOW_DATA_LOSS
Tüm bildirilen hataları onarmak çalışır.Bu onarımlar, bazı veri kaybına neden olabilir.REPAIR_FAST
Sözdizimi yalnızca geriye dönük uyumluluk için korunur.Hiçbir onarım eylemler gerçekleştirilir.REPAIR_REBUILD
Hiçbir veri kaybı olasılığı olan onarımları gerçekleştirir.Bu eksik satırları kümelenmemiş dizinleri ve daha fazla saatonarımı gibi Hızlı onarım içerebilir-onarım dizin yeniden oluşturma gibi tüketen.REPAIR_REBUILD FILESTREAM veri ilgili hataları onarmaz.
Not
ONARIM seçenekleri yalnızca son çare olarak kullanın.Hataları onarmak için bir yedekgeri öneririz.Onarım işlemlerini bulunabilecek kısıtlamalar üzerinde veya tablolar arasında hiçbirini dikkate almaz.Belirtilen tablo bir veya daha fazla kısıtlamalar söz konusu ise, dbcc CHECKCONSTRAINTS Onarım işleminden sonra çalıştıran öneririz.ONARIM kullanmak zorundaysanız, dbcc checktable kullanmak için onarım düzey bulmak için onarım seçeneği olmadan çalıştırın.Öneririz, REPAIR_ALLOW_DATA_LOSS düzeykullanacaksanız varsa, o, yedeklemek bu seçeneğiyle dbcc checktable çalıştırmadan önce veritabanını.
ALL_ERRORMSGS
Sınırsız sayıda hataları görüntüler.Tüm hata iletileri varsayılan olarak görüntülenir.Belirleme veya bu seçenek atlama hiçbir etkisi yoktur.EXTENDED_LOGICAL_CHECKS
Uyumluluk düzey 100 ise (SQL Server 2008) veya sonraki bir dizinli görünüm, xml dizinler ve kayma dizinler üzerinde mantıksal tutarlılık denetimleri gerçekleştirir yeri bulunamıyor.Daha fazla bilgi için bkz: "Gerçekleştirme mantıksal tutarlılığını denetler üzerinde dizinler" "Açıklamalar" daha sonra bu bölümde.
NO_INFOMSGS
Bilgi tüm iletileri bastırır.TABLOCK
Bir iç veritabanı anlık görüntüsükullanmak yerine paylaşılan tablokilit almak dbcc checktable neden olur. tablock Ağır yük altında bir tablo daha hızlı çalıştırmak dbcc checktable neden olur, ancak dbcc checktable çalışırken eşzamanlılık tablo kullanılabilir azaltır.ESTIMATEONLY
Tahmini miktarını görüntüler tempdb yer gerekli çalıştırma dbcc checktable tüm diğer belirtilen seçenekleri.PHYSICAL_ONLY
bütünlük sayfa, kayıt üstbilgileri ve b ağaçları fiziksel yapısını fiziksel yapısı için denetimi sınırlar.Küçük genel gider tablofiziksel tutarlılığını kontrol sağlamak üzere tasarlanmış bu onay olabilir de sayfaları ve veri tehlikeye ortak donanım arızaları parçalanmış algılamak .dbcc checktable, tam bir çalışma daha önceki sürümlerinde oldukça uzun sürebilir.Bu davranış aşağıdaki nedenlerden biriyle oluşur:Mantıksal denetimleri daha kapsamlıdır.
Denetlenecek yapıların bazıları daha karmaşıktır.
Birçok yeni denetimler, yeni özellikler eklemek için sunulmuştur.
Bu nedenle PHYSICAL_ONLY seçeneğini kullanarak daha çok kısa bir çalışma -saat için dbcc checktable büyük tablolarda neden olabilir ve bu nedenle üretim sistemlerinde sık kullanım için önerilir.Yine de dbcc checktable, tam bir çalışma düzenli olarak yapılması önerilir.Bu metinler sıklığını bireysel işletmeler ve üretim ortamları için özel etkenler bağlıdır.PHYSICAL_ONLY her zaman NO_INFOMSGS anlamına gelir ve onarım seçenekleri herhangi biri izin verilmez.
Not
PHYSICAL_ONLY tüm atlamak dbcc checktable neden belirtilmesi FILESTREAM verileri denetler.
DATA_PURITY
tablo geçersiz sütun değerleri veya out denetlemek dbcc checktable neden-in-aralık.Örneğin, daha büyük veya daha az kabul edilebilir aralık tarih ve saat değerleri olan sütunlar dbcc checktable algılar datetime veri türü; veya decimal veya yaklaşık sayısal veri türü geçersiz ölçek ya da kesinlik değerleri içeren sütunların.Oluşturulan veritabanları için SQL Server 2005 ve daha sonra sütun-değer bütünlük denetler varsayılan olarak etkinleştirilir ve DATA_PURITY seçeneği. gerektirmeyenDaha önceki sürümlerinden yükseltme veritabanları için SQL Serverile dbcc checktable DATA_PURITY bulmak ve belirli bir tablo; hatalarını düzeltmek için kullanın Ancak, sütun-değer denetimleri tablo etkin varsayılan olarak DATA_PURITY ile dbcc checkdb hatasız veritabanında kadar.Bundan sonra dbcc checkdb dbcc checktable sütundenetleyip- bütünlük varsayılan değer.
dbcc onarım seçenekleri kullanarak bu seçeneği tarafından bildirilen doğrulama hatası düzeltilemeyebilir.El ile bu hataları giderme hakkında daha fazla bilgi için bkz: Bilgi Bankası makale 923247: SQL Server 2005'te 2570 dbcc hata giderme.
sütun-bütünlük kontrolü olmayan PHYSICAL_ONLY belirtilirse, gerçekleştirilen.
Açıklamalar
Not
dbcc checktable veritabanındaki her tablo yapmak için dbcc checkdb.
Belirtilen tabloiçin dbcc checktable aşağıdakileri denetler:
Dizin, satır içinde lob ve satır taşması verisi sayfaları düzgün bağlı.
Dizinler kendi doğru sıralama düzeniolur.
İşaretçilerin tutarlı olduğunu.
Her veri sayfa makul, hesaplanan sütunlar eklenir.
Sayfa uzaklıklar makul.
temel tablo her satırın, her kümelenmemiş dizinve tam tersi eşleşen bir satır vardır.
Her satırda bir bölümlenmiş tablo ya da dizin içinde doğru bölümdür.
Link -düzey tutarlılık dosya sistemi ve saklarken tablo arasında varbinary(max) veri dosya sistemindeki kullanarak FILESTREAM.
Dizinler üzerinde mantıksal tutarlılığı gerçekleştirme denetler
Mantıksal tutarlılık denetimini dizinlerde Uyumluluk düzey veritabanı göre aşağıdaki gibi değişir:
Uyumluluk düzey 100 ise (SQL Server 2008) veya daha yüksek:
NOINDEX belirtilmediği sürece, tek bir tablo ve tüm kümelenmemiş dizinler dbcc checktable hem fiziksel ve mantıksal tutarlılık denetimleri gerçekleştirir.Ancak, xml dizinler, kayma dizinleri ve dizin oluşturulmuş görünümler yalnızca fiziksel tutarlılık denetimleri varsayılan olarak yapılır.
EXTENDED_LOGICAL_CHECKS ile belirtilmiş olması durumunda bir dizinli görünüm, xml dizinler ve kayma dizinler üzerinde mantıksal denetimleri gerçekleştirilmez, burada sunmak.Varsayılan olarak, fiziksel tutarlılık denetimleri önce mantıksal tutarlılık denetimleri gerçekleştirilmez.NOINDEX de belirtilirse, yalnızca mantıksal denetimleri gerçekleştirilmez.
Bu mantıksal tutarlılık onay iç dizin tablo Index nesnesinin, başvuran kullanıcı tablo denetler.Sınırdaki satırları bulmak için bir tam kesişimini iç ve kullanıcı tabloları gerçekleştirmek için bir iç sorgu oluşturulur.Bu sorguyu çalıştıran bir çok yüksek performans üzerindeki etkisi ve ilerleme durumunu izlenemez.Bu nedenle, yalnızca fiziksel bozulma ilgisiz dizin sorunları şüpheleniyorsanız veya sayfa-düzey sağlama kapatılmış ve sütun-düzey donanım bozulması şüphe ile EXTENDED_LOGICAL_CHECKS belirtmek öneririz.
dbcc checkdb dizin filtre uygulanmış bir dizin, dizin girişlerini filtre yüklemi karşılamak doğrulamak için tutarlılık denetimleri gerçekleştirir.
Uyumluluk düzey 90 veya NOINDEX belirtilmediği sürece daha az, dbcc checktable fiziksel ve mantıksal tutarlılık denetimleri tek bir tablo veya dizinli görünüm ve tüm onun kümelenmemiş ve xml dizinler gerçekleştirir.Kayma dizinler desteklenmez.
Bir veritabanı Uyumluluk düzey öğrenmek için
İç Veritabanı anlık görüntü
dbcc checktable bir iç veritabanı anlık görüntüsü bu denetimleri gerçekleştirmek için gereken işlem tutarlılığı sağlamak için kullanır.Daha fazla bilgi için Seyrek dosya boyutları veritabanı anlık içinde anlama ve "dbcc iç veritabanı anlık görüntü kullanımı" bulunan bölümünde dbcc (Transact-SQL).
Bir anlık görüntü oluşturulan veya tablock belirtilmiş, dbcc checktable gerekli tutarlılık elde etmek için paylaşılan tablo kilit isteklerdir.
Not
dbcc checktable karşı çalıştırırsanız, tempdb, paylaşılan tablo kilitalmalıdır.Bu, performansla ilgili nedenlerden dolayı veritabanı anlık üzerinde kullanılamaz çünkü tempdb.Yani, gerekli işlem tutarlılığı alınamıyor.
Denetleme ve onarma FILESTREAM veri
FILESTREAM veritabanı ve tabloiçin etkinleştirildiğinde, isteğe bağlı olarak, saklayabilirsiniz varbinary(max) ikili büyük nesneleri (BLOB) dosya sistemi.dbcc checktable BLOB dosya sisteminde depolayan bir tablo kullandığınızda, dbcc bağ -düzey tutarlılık dosya sistemi ve veritabanı arasında denetler.
Örneğin, bir tablo içeriyorsa, bir varbinary(max)sütun FILESTREAM öznitelikkullanır dbcc CHECKTABLE'ı işaretleyin, dosya sistemi dizinleri ve dosyaları ve tablo satırları, sütunları ve arasında bire bir eşleme yok sütun değerleri.REPAIR_ALLOW_DATA_LOSS seçeneğini belirtirseniz, dbcc checktable Bozulması onarabilirsiniz.FILESTREAM bozulmayı onarmak için dbcc dosya sistem verileri eksik olan ve tüm dizinler ve tablo satır, sütunveya sütun değeri eşlemeyin dosyalar silinecek tablo satırları siler.
Paralel nesneleri denetleme
Varsayılan olarak, dbcc checktable paralel nesnelerin denetimini gerçekleştirir.Paralellik derecesini otomatik olarak sorgu işlemcisi tarafından belirlenir.Maksimum paralellik derecesi, paralel sorgular aynı şekilde yapılandırılır.dbcc denetlemek için kullanılabilir işlemci sayısına kısıtlamak için sp_configure.Daha fazla bilgi için, bkz. en büyük ölçüde parallelism seçeneği.
Paralel denetimi izleme bayrağı 2528 kullanarak devreden çıkarılabilir.Daha fazla bilgi için, bkz. İzleme Bayrakları (Transact-SQL).
Not
dbcc checktable işlemi sırasında bir kullanıcı tanımlı türbayt siparişsütun depolanan bayt kullanıcı tanımlı tür değeri hesaplanan serileştirmek için eşit olmalıdır. Bu bilgiler doğru değilse, dbcc checktable düzenli tutarlılık hatası bildirir.
dbcc hata iletileri anlama
dbcc checktable komutunu sona erdikten sonra ileti yazılır SQL Server hata günlüğü.dbcc komutu başarıyla yürütür, iletiyi başarılı tamamlama ve komutu çalıştırılmadan saat gösterir.dbcc komut bir hata nedeniyle onay tamamlamadan önce durursa, komut sonlandırıldı, durumu değeri ve saat komutu çalıştırılmadan iletisi gösterir.Aşağıdaki tablo , listeler ve iletiye dahil durum değerleri açıklanmaktadır.
Durumu |
Açıklama |
---|---|
0 |
Hata numarası 8930 Sürüldü.Bu dbcc komut sonlandırmak neden bir meta veriler Bozulması gösterir. |
1 |
Hata numarası 8967 Sürüldü.İç dbcc hata oluştu. |
2 |
Acil Durum modu veritabanı onarım sırasında bir hata oluştu. |
3 |
Bu dbcc komut sonlandırmak neden bir meta veriler Bozulması gösterir. |
4 |
Assert veya erişim ihlali algılandı. |
5 |
dbcc komut sonlandırıldı bilinmeyen bir hata oluştu. |
Hata bildirimi
Bir minidöküm dosyası (sqldumpnnnn.txt) oluşturulur SQL Server Günlük dizini olduğunda dbcc checktable algılar bir bozulma hatası.Özellik kullanımı veri koleksiyon ve hata raporlama özellikleri etkinleştirildiğinde örnek için SQL Server, dosya için iletilen otomatik olarak Microsoft.Toplanan verileri geliştirmek için kullanılan SQL Server işlevi.
döküm dosyasını sonuçlar ek tanılama çıktı ve dbcc checktable komutunu içerir.Dosya isteğe bağlı erişim denetim listeleri (DACL) kısıtladı.Sınırlı erişim SQL Server hizmet hesabı ve üyeleri sysadmin rolü.Varsayılan olarak, sysadmin rolü içeren tüm Windows BUILTIN\Administrators grubunun üyeleri ve yerel Yöneticiler grubu.Veri koleksiyon işlemi başarısız olduğunda dbcc komutu başarısız olmaz.
Hataları çözme
dbcc checktable herhangi bir hata bildirirse, dan ONAR ONAR seçeneklerden birini çalıştırmak yerine veritabanının yedek veritabanını geri öneririz.Hiçbir yedek varsa, ONARIM çalışan raporlanan hataları düzeltebilirsiniz.ONAR seçeneğini kullanmak için bildirilen hataların listesini sonunda belirtilir.Ancak, REPAIR_ALLOW_DATA_LOSS seçeneğini kullanarak bu hataları düzeltme bazı sayfaları ve bu nedenle veri silinmesi gerekebilir.
Onarım yapılmış olan değişiklikleri geri almak kullanıcıya izin vermek için kullanıcı işlem altında gerçekleştirilebilir.Onarımlar geri alınır, veritabanı hala hatalar içerir ve bir yedekgeri yüklenmesi gerekir.Tüm onarımları, yedeklemek veritabanı tamamladıktan sonra.
Sonuç Kümeleri
dbcc checktable aşağıdaki sonuç kümesidöndürür.tablo adı veya seçeneklerden birini belirlerseniz, 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.
ESTIMATEONLY seçenek belirtilmezse aşağıdaki sonuç kümesi dbcc checktable 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ı tablosahibi veya gerekir üye olmanız sysadmin sabit sunucu rolü, db_owner veritabanı rolü, sabit veya db_ddladmin veritabanı rolüsabit.
Örnekler
A.Belirli bir tablodenetimi
The following example checks the data page integrity of the HumanResources.Employee table in the AdventureWorks2008R2 database.
USE AdventureWorks2008R2;
GO
DBCC CHECKTABLE ("HumanResources.Employee");
GO
B.tablodüşük yükü onay gerçekleştirme
Aşağıdaki örnek düşük bir genel gider denetimini gerçekleştirir Employee tablo AdventureWorks2008R2 veritabanı.
USE AdventureWorks2008R2;
GO
DBCC CHECKTABLE ("HumanResources.Employee") WITH PHYSICAL_ONLY;
GO
C.Belirli bir dizini denetleniyor
Aşağıdaki örnek erişerek elde edilen belirli bir dizin denetler sys.indexes.
USE AdventureWorks2008R2;
GO
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);
Ayrıca bkz.