dbcc checktable (Transact-sql)

Tüm sayfaları ve tablo veya dizin oluşturulmuş görünüm kadar yapılar bütünlüğünü denetler.

Konu bağlantısı simgesi Transact-SQL Sözdizim 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 } ] 
        }
    ]

Bağımsız değişkenler

  • table_name | view_name
    Tablo veya dizin oluşturulmuş görünüm bütünlük denetimleri çalıştırmak için. Tablo veya Görünüm adları için kuralları ile uymak gerekir tanımlayıcıları.

  • NOINDEX
    Kullanıcı tablolarının kümelenmemiş dizinlerinin yoğun denetimlerinin yapılmaması gerektiğini belirtir. Bu, genel çalıştırma süresini kısaltır. NOINDEX, sistem tabloları etkilemez, çünkü bütünlük denetimleri her zaman tüm sistem tablosu dizinler üzerinde gerçekleştirilir.

  • index_id
    Bütünlük denetimleri çalıştırmak için dizin kimliği sayısıdır. Eğer index_idbelirtilirse, bütünlüğünü denetler yalnızca yığın veya kümelenmiş dizin ile birlikte bu dizin üzerinde çalışan dbcc checktable.

  • 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ı modunda olması gerekir.

    • REPAIR_ALLOW_DATA_LOSS
      Rapor edilen tüm hataları onarmaya çalışır. Bu onarımlar bazı verilerin kaybolmasına neden olabilir.

    • REPAIR_FAST
      Sözdizimi yalnızca geriye dönük uyumluluk için korunur. Hiçbir onarım işlemi gerçekleştirilmez.

    • REPAIR_REBUILD
      Veri kaybetme olasılığı olmayan onarımları gerçekleştirir. Bunlar kümelenmemiş dizinlerdeki eksik satırları onarma gibi hızlı onarımlar veya bir dizini yeniden oluşturma gibi zaman alan onarımlar olabilir.

      REPAIR_REBUILD, FILESTREAM verilerinin söz konusu olduğu hataları onarmaz.

    [!NOT]

    REPAIR seçeneklerini yalnızca son çare olarak kullanın. Hataları onarmak için bir yedekten geri yüklemenizi öneririz. Onarım işlemleri tablolar üzerindeki veya arasındaki kısıtlamaların hiçbirini göz önüne almaz. Belirtilen tablo bir veya daha fazla kısıtlamada kullanılıyorsa, onarım işleminden sonra DBCC CHECKCONSTRAINTS komutunun çalıştırılmasını öneririz. Onarım kullanmalısınız, dbcc checktable kullanmak için onarım düzeyi bulmak için onarım seçeneği çalıştırın. REPAIR_ALLOW_DATA_LOSS düzeyini kullanmak için kullanacaksanız bu seçeneği ile dbcc checktable çalıştırmadan önce veritabanını yedeklemek öneririz.

  • ALL_ERRORMSGS
    Sınırsız sayıda hataları görüntüler. Varsayılan olarak tüm hata iletileri gösterilir. Bu seçeneği belirtmenin veya çıkarmanın hiçbir etkisi olmaz.

  • EXTENDED_LOGICAL_CHECKS
    Uyumluluk düzeyi 100 ise (SQL Server 2008) veya daha yüksek yerlerde mevcut kayma dizinleri, dizin oluşturulmuş görünüm ve xml dizinler üzerinde mantıksal tutarlılık denetimleri gerçekleştirir.

    Daha fazla bilgi için bkz: "Gerçekleştirme mantıksal tutarlılığını denetler üzerinde dizinler" "Açıklamalar" Bu konuda daha sonra açıklanan bölümü.

  • NO_INFOMSGS
    Tüm bilgi iletilerini kapatır.

  • TABLOCK
    dbcc checktable, bir iç veritabanı anlık görüntüsünü kullanmak yerine paylaşılan Tablo kilidi almak neden olur. tablock ağır yük altında tablo daha hızlı çalıştırmak dbcc checktable neden olur, ancak dbcc checktable çalışırken eşzamanlılık masaya temin azalır.

  • ESTIMATEONLY
    Tahmini miktarını görüntüler tempdbdbcc checktable tüm diğer çalıştırmak için gerekli alanı belirtilen seçenekleri.

  • PHYSICAL_ONLY
    Sayfa, kayıt üstbilgi ve b-ağaçlar fiziksel yapısını fiziksel yapısının bütünlüğünü kontrol sınırlar. Küçük havai denetleme ve tabloyu fiziksel tutarlılığını sağlamak için tasarlanmış, bozuk sayfalar ve verilerini tehlikeye ortak donanım hataları da bu onay algılayabilir. dbcc checktable tam bir çalışması önceki sürümlerinde çok daha uzun sürebilir. Bu davranış, aşağıdaki nedenlerle oluşur:

    • Mantıksal denetimler daha kapsamlıdır.

    • Alttaki bazı yapıların denetlenmesi daha karmaşıktır.

    • Bu yeni özellikleri dahil etmek için pek çok yeni denetim konmuştur.

    Bu nedenle PHYSICAL_ONLY seçeneğini kullanarak bir çok kısa çalıştırma dbcc checktable için büyük tablolar neden olabilir ve bu nedenle üretim sistemlerinde sık kullanım için önerilir. Yine de tam bir çalıştırma dbcc checktable düzenli olarak yapılması önerilir. Bu çalıştırmaların sıklığı ayrı ayrı iş ve üretim ortamlarına özgü etmenlere bağlıdır. PHYSICAL_ONLY her zaman NO_INFOMSGS komutunu gerektirir ve onarım seçeneklerinden herhangi biriyle kullanılamaz.

    [!NOT]

    Tüm atlamak dbcc checktable PHYSICAL_ONLY neden belirtilmesi FILESTREAM veri denetler.

  • DATA_PURITY
    Tablo için geçerli ya da çeşitli sütun değerleri denetlemek dbcc checktable neden olur. Örneğin, Tarih ve saat değerleri içeren daha büyük veya daha az kabul edilebilir aralığın sütun dbcc checktable algılar datetimeveri türü; veya decimalveya yaklaşık sayısal veri türü sütun ölçeğini ve duyarlılığını değerleri içeren geçerli değildir.

    Oluşturulan veritabanları için SQL Server 2005sütun değeri bütünlük denetimleri, sonra da varsayılan olarak etkinleştirilir ve DATA_PURITY seçeneği gerektirmez. Önceki sürümlerinden yükseltme veritabanları için SQL Server, sen-ebilmek kullanma bulmak ve belirli bir tablo; hataları düzeltmek için DATA_PURITY ile dbcc checktable Ancak, veritabanında dbcc checkdb ile DATA_PURITY hatasız çalıştırıldı kadar sütun değeri kontrol tablosundaki varsayılan olarak etkin değildir. Bundan sonra dbcc checkdb ve dbcc checktable sütun değeri bütünlüğü varsayılan olarak denetleyin.

    Bu seçeneğin raporladığı doğrulama hataları, DBCC onarım seçenekleri kullanılarak düzeltilemez. El ile bu hataları giderme hakkında daha fazla bilgi için bkz: Bilgi Bankası makalesi 923247: sorun giderme dbcc hata 2570 SQL Server 2005'te.

    PHYSICAL_ONLY belirtilirse, sütun bütünlüğü denetimleri gerçekleştirilmez.

Açıklamalar

[!NOT]

Her tablo veritabanında dbcc checktable gerçekleştirmek için dbcc checkdb.

Belirtilen tablo için dbcc checktable aşağıdakileri denetler:

  • Dizin satır, lob ve satır taşma veri sayfaları düzgün bağlı.

  • Dizinler kendi doğru sıralama sıradadır.

  • İşaretçiler tutarlıdır.

  • Her veri sayfası makul, hesaplanan sütunlar dahil.

  • Sayfa uzaklıklar makul.

  • Temel tablodaki her satır, her kümelendirilmemiş dizini ve tersi eşleşen bir satır vardır.

  • Bölümlenmiş tablo veya dizin her satırda doğru bölümü var.

  • Bağlantı düzeyi dosya sistemi ve tablo arasında tutarlılığı saklarken varbinary(max)verileri kullanarak FILESTREAM dosya sistemindeki.

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şkenlik gösterir:

  • Uyumluluk düzeyi 100 ise (SQL Server 2008) veya daha yüksek:

    • NOINDEX belirtilmedikçe, dbcc checktable hem fiziksel yapar ve tek bir tablo ve bütün kümelendirilmemiş dizinler üzerinde mantıksal tutarlılığını denetler. Ancak, XML dizinlerinde, uzamsal dizinlerde ve dizinli 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 bir görünümde, XML dizinlerinde ve varsa uzamsal dizinlerde gerçekleştirilir. Varsayılan olarak fiziksel tutarlılık denetimleri, mantıksal tutarlılık denetimlerinden önce gerçekleştirilir. NOINDEX de ayrıca belirtilirse, yalnızca mantıksal denetimler gerçekleştirilir.

      Bu mantıksal tutarlılık denetimleri, dizin nesnesinin dahili dizin tablosu ile bu tablonun başvurduğu kullanıcı tablosu arasındaki tutarlılığı denetler. Dışta kalan satırları bulmak için, dahili tabloların ve kullanıcı tablolarının tam bir kesişimini gerçekleştirmek için dahili bir sorgu oluşturulur. Bu sorguyu çalıştırmanın performans üzerinde çok ağır bir etkisi olabilir ve ilerleyişi izlenemez. Dolayısıyla, WITH EXTENDED_LOGICAL_CHECKS seçeneğini yalnızca fiziksel bozulma ile ilişkisiz dizin sorunlarından kuşkulanıyorsanız veya sayfa düzeyi bir sağlama toplamı kapatıldıysa ve sütun düzeyinde donanım bozulmasından kuşkulanıyorsanız belirtmenizi öneririz.

    • Dizin filtrelenmiş bir dizinse, DBCC CHECKDB, dizin girişlerinin filtreleme koşulunu karşıladığını doğrulamak için tutarlılık denetimleri gerçekleştirir.

  • Eğer uyumluluk düzeyi 90 veya NOINDEX belirtilmediği sürece daha az, dbcc checktable hem fiziksel ve mantıksal tutarlılık denetimleri tek bir tablo veya dizin oluşturulmuş görünüm ve onun tüm kümelenmemiş hem de xml dizinler gerçekleştirir. Uzamsal dizinler desteklenmez.

Veritabanı uyumluluk düzeyi hakkında daha fazla bilgi için

Dahili Veritabanı Anlık Görüntüsü

dbcc checktable bir iç veritabanı anlık görüntüsünü bu denetimleri gerçekleştirmek için gereken işlem tutarlılığı sağlamak için kullanır. Daha fazla bilgi için Veritabanı Snapshot (Transact-sql) seyrek dosya boyutunu görüntülemekve "dbcc iç veritabanı anlık kullanım" bölüm içinde DBCC (Transact-sql).

Anlık oluşturulamaz veya tablock belirtilir, dbcc checktable gerekli tutarlılık elde etmek için bir paylaşılan Tablo kilidi edinir.

[!NOT]

dbcc checktable karşı çalıştırırsanız tempdb, paylaşılan Tablo kilidi almalıdır. Performansı düşürmemek için anlık görüntüleri veritabanı kullanılamaz, bunun nedeni tempdb. Bu, gerekli işlem tutarlılığının sağlanamayacağı anlamına gelir.

FILESTREAM Verilerini Denetleme ve Onarma

FILESTREAM veritabanı ve tablo için etkinleştirildiğinde, isteğe bağlı olarak depolayabileceğiniz varbinary(max)büyük ikili nesneler (BLOB'lar) dosya sistemi. dbcc checktable BLOB dosya sisteminde depolayan bir tablo kullandığınızda, dbcc veritabanı dosya sistemi arasındaki bağlantı düzeyinde tutarlılığını denetler.

Örneğin, bir tablo içeriyorsa, bir varbinary(max)sütun FILESTREAM özniteliği, dbcc checktable kullandığı dosya sistemi dizinleri ve dosyaları ve tabloya satır, sütun ve sütun değerleri arasında bire bir eşleme olduğunu denetleyin. REPAIR_ALLOW_DATA_LOSS seçeneğini belirtirseniz, dbcc checktable yolsuzluk onarabilirsiniz. FILESTREAM bozulması'ı onarmak için dbcc herhangi bir tablo satırları dosya sistemi verileri eksik olan ve herhangi bir dizin ve tablo satır, sütun veya sütun değerine eşlemeyin dosyaları siler siler.

Paralel Olarak Nesne Denetleme

Varsayılan olarak, dbcc checktable paralel nesnelerin denetimini gerçekleştirir. Paralellik derecesi, sorgu işleyici tarafından otomatik olarak belirlenir. En büyük ölçüde parallelism paralel sorgu olarak aynı şekilde yapılandırılır. dbcc denetlenmesinde kullanılabilir işlemci sayısını kısıtlamak için sp_configure. Daha fazla bilgi için, bkz. Maksimum ölçüde parallelism sunucu yapılandırma seçeneği yapılandırmak.

Paralel denetleme ayrıca izleme bayrağı 2528 kullanılarak da devre dışı bırakı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ürü bayt sipariş sütunda depolanan bayt kullanıcı tanımlı türü değeri hesaplanmış serileştirmek için eşit olmalıdır. Bu bilgiler doğru değilse, dbcc checktable rutin bir tutarlılık hatası bildirir.

DBCC Hata İletilerini Anlama

dbcc checktable komutu tamamlandığında, bir mesaj yazılan SQL Serverhata \Kütüğü dbcc komut başarıyla yürütür, iletinin başarıyla tamamlanması ve komutu çalıştırdığınız süreyi belirtir. dbcc komut bir hata nedeniyle onay tamamlamadan önce durursa, ileti komutu sona, devlet değeri ve komutu çalıştırdığınız süreyi gösterir. Aşağıdaki tablo iletiye dahil edilebilecek durum değerlerini listelemekte ve açıklamaktadır.

Durum

Açıklama

0

Hata numarası 8930 büyüdü. Bu bir meta veri bozulması sonlandırmak için dbcc komutu neden gösterir.

1

Hata numarası 8967 büyüdü. Dahili bir DBCC hatası vardı.

2

Acil mod veritabanı onarımı sırasında bir hata oluştu.

3

Bu bir meta veri bozulması sonlandırmak için dbcc komutu neden gösterir.

4

Bir önerme veya erişim ihlali algılandı.

5

DBCC komutunu sonlandıran bilinmeyen bir hata oluştu.

Hata Raporlama

Mini-dump dosya (sqldumpnnnn.txt) oluşturulur SQL Serverdbcc checktable yolsuzluk hata algıladığında günlük dizini. Özellik kullanımı veri toplama ve hata raporlama özellikleri etkinleştirildiğinde örneği için SQL Server, dosya otomatik olarak iletilir Microsoft. Toplanan verileri geliştirmek için kullanılan SQL Serverişlevsellik.

Döküm dosyası, dbcc checktable komutunu ve ek tanılama çıkış sonuçlarını içerir. Dosya isteğe bağlı erişim denetim listeleri (DACL) kısıtladı. Erişim sınırlı SQL Serverhizmet hesabı ve üyeleri sysadminrolü. Varsayılan olarak sysadmin rolü Windows BUILTIN\Administrators grubunun ve yerel yöneticinin grubunun tüm üyelerini içerir. DBCC komutu, veri koleksiyonu işlemi başarısız olursa başarısız olmaz.

Hataları Çözme

dbcc checktable hataları rapor, yerine tamir onarım seçenekleri ile çalıştıran veritabanı yedeği veritabanını geri öneririz. Yedeğiniz varsa, onarım çalışan raporlanan hataları düzeltebilirsiniz. Onarım seçeneği 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ılan değişiklikleri geri almak izin veren bir kullanıcı hareket altında gerçekleştirilebilir. Onarımlar geri alınırsa, veritabanı hala hatalar içeriyor olur ve bir yedekten geri yüklenmesi gerekir. Tüm onarım tamamladıktan sonra veritabanını yedekleyin.

Sonuç Kümeleri

dbcc checktable aşağıdaki sonuç kümesi döndürür. Aynı sonuç kümesi yalnızca tablo adı ya da seçenekleri belirtip belirtmediğinize 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 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çenek belirtilmezse aşağıdaki sonuç kümesi 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.

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ı tablonun sahibi gerekir veya üyesi olmak sysadminsabit sunucu rolü, db_ownersabit veritabanı rolü, ya da db_ddladminveritabanı rolü.

Örnekler

A.Belirli bir tablo denetimi

Aşağıdaki örnek veri sayfası bütünlüğünü denetler HumanResources.Employee içinde masa AdventureWorks veritabanı.

USE AdventureWorks2012;
GO
DBCC CHECKTABLE ("HumanResources.Employee");
GO

B.Tablonun düşük tepegöz onay gerçekleştirme

Aşağıdaki örnek bir düşük tepegöz denetler Employee içinde masa AdventureWorksveritabanı.

USE AdventureWorks2012;
GO
DBCC CHECKTABLE ("HumanResources.Employee") WITH PHYSICAL_ONLY;
GO

C.Belirli bir dizin denetleniyor

Aşağıdaki örnek erişerek elde edilen belirli bir dizin bakar sys.indexes.

USE AdventureWorks2012;
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.

Başvuru

DBCC (Transact-sql)

DBCC CHECKDB (Transact-SQL)