Aracılığıyla paylaş


DBCC CHECKDB (Transact-SQL)

Aşağıdaki işlemleri gerçekleştirerek belirtilen veritabanındaki tüm nesneler mantıksal ve fiziksel bütünlüğünü denetler:

  • ÇalıştırırDBCC CHECKALLOC , veritabanı.

  • ÇalıştırırDBCC CHECKTABLE Her tablo ve görünümünde veritabanı.

  • ÇalıştırırDBCC CHECKCATALOG , veritabanı.

  • Her dizinli görünüm veritabanında içeriğini doğrular.

  • Validates bağlantı düzey tablo meta veriler ve dosya sistemi dizinleri ve dosyaları, depolama arasında tutarlılığıvarbinary(max)veri dosya sistemi kullanarak FILESTREAM.

  • DoğrulamaService Brokerveri veritabanı.

Diğer bir deyişle, DBCC CHECKALLOC'u, DBCC CHECKTABLE ve DBCC CHECKCATALOG komutlarını ayrı ayrı DBCC CHECKDB çalıştırmak üzere olmanız gerekmez.Bu komutları denetimleri hakkında daha ayrıntılı bilgi için bu komutların açıklamalarına bakın.

Topic link iconTransact-SQL sözdizimi kuralları

DBCC CHECKDB 
[
    [ ( database_name | database_id | 0
        [ , NOINDEX 
        | , { 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

  • database_name | database_id | 0
    Adı veya kodu, bütünlük denetimleri çalıştırmak için veritabanının uyumsuz.Belirtilmezse veya 0 belirtilirse, geçerli veritabanı kullanılır.Veritabanı adları kuralları ile uyumlu olmalıdırtanımlayıcılar.

  • NOINDEX
    Kullanıcı tablosu için kümelenmemiş dizinler yoğun denetimleri değil gerçekleştirilmesi gerektiğini belirtir.Bu genel çalışma zamanı azaltır.Bütünlük denetimi her zaman sistem tablo dizinlerde yapılır çünkü sistem tabloları NOINDEX etkilemez.

  • REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
    DBCC CHECKDB bulunan hataları onarmak belirtir.The specified databasemust be in single-user mode to use one of the following repair options.

    • REPAIR_ALLOW_DATA_LOSS
      Tüm bildirilen hataları onarmak çalışır.Bu onarım bazı veri kaybına neden olabilir.

    • REPAIR_FAST
      Sözdizimi yalnızca geriye dönük uyumluluk için korunur.Hiçbir onarım işlemleri 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 dizin yeniden oluşturma gibi daha fazla saat onarımlar onarma gibi hızlı onarım, içerebilir.

      REPAIR_BUILD FILESTREAM veri ile ilgili hataları onarmaz.

    Important noteImportant Note:

    ONARIM seçenekleri yalnızca son çare olarak kullanın.Hataları onarmak için bir yedek kopyadan geri yüklenmesi önerilir.Onarım işlemlerini bulunabilecek kısıtlamalar üzerinde veya tablolar arasında birini düşünün değil.Belirtilen tablo bir veya daha fazla kısıtlamayı söz konusu ise, DBCC CHECKCONSTRAINTS Onarım işleminden sonra çalışan öneririz.REPAIR kullanmanız gerekiyorsa, DBCC CHECKDB kullanmak için onarım düzeyini bulmak için onarma seçeneği olmadan çalıştırın.REPAIR_ALLOW_DATA_LOSS düzey kullanırsanız, bu seçenek, DBCC CHECKDB komutunu çalıştırmadan önce veritabanını yedeklemeniz önerilir.

  • ALL_ERRORMSGS
    Her nesne, tüm bildirilen hataları görüntüler.InSQL Server 2008hizmet Pack 1 (SP1), tüm hata iletileri varsayılan olarak görüntülenirBelirterek veya bu seçenek kullanılmazsa, hiçbir etkisi yoktur.Önceki sürümlerindeALL_ERRORMSGS belirtilmezse, SQL Server(exceptSQL Server 2005SP3), yalnızca ilk 200 hata iletileri her nesne için görüntülenen.Hata iletileri için oluşturulan gelen iletileri dışında nesne kimliği sıralanırtempdb veritabanı.

    InSQL Server Management Studio, hata iletileri sayısı verilen 1000.KullanmaManagement Studio, birden çok kez ALL_ERRORMSGS belirtildiğinde hataların tam bir listesini elde etmek için DBCC CHECKDB çalıştırmak gerekebilir.ALL_ERRORMSGS belirttiğinizde, DBCC komutunu kullanarak çalıştırmanızı öneririzSQLCMD yardımcı programı veya iş planlama çizelgeleme bir SQL Serveraracı iş komutunu çalıştırmak ve doğrudan çıktı dosyası.Bu yöntemlerden herhangi birini bir kez komutu çalıştıran tüm hata iletilerini bildirir sağlayacaktır.

  • EXTENDED_LOGICAL_CHECKS
    Uyumluluk düzeyini 100 ise ( SQL Server 2008) veya sonraki mantıksal tutarlılığını denetler, kayma dizinler, dizinli görünüm ve XML dizinler burada geçerli.

    Daha fazla bilgi için "Gerçekleştirme mantıksal tutarlılığını denetler, dizinler," Bu konunun ilerleyen "Uyarılar" bölümüne bakın.

  • NO_INFOMSGS
    Engeller tüm bilgilendirici iletileri.

  • TABLOCK
    Bir iç veritabanı anlık görüntü görüntü görüntü görüntüsü görüntüsü kullanmak yerine kilit elde etmek DBCC CHECKDB neden olur.Bu kısa süreli (X) özel kilit veritabanı içerir.TABLOCK Ağır yük altında bir veritabanına daha hızlı çalıştırmak, DBCC CHECKDB neden olur, ancak DBCC CHECKDB çalışırken kullanılabilir veritabanı eşzamanlılık azaltır.Kilitler hakkında daha fazla bilgi için bkz:Kilit modu.

    TABLOCK gerçekleştirilen denetimler sınırlar; DBCC CHECKCATALOG, veritabanında değil çalıştırın veService Brokerveri geçerliliği.

  • ESTIMATEONLY
    Tahmini miktarını görüntüler.tempdbtüm diğer belirtilen seçenekleri. DBCC CHECKDB çalıştırmak için gereken alanAsıl veritabanı denetimi gerçekleştirilmez.

  • PHYSICAL_ONLY
    Denetleme için sınırlar bütünlük sayfa ve kayıt başlıklarının fiziksel yapısını, fiziksel yapısını B ağaçlarının ve veritabanının tutarlılığını ayırma.Bu denetim küçük bir genel gider denetimi fiziksel veritabanı tutarlılığını sağlamak için tasarlanmıştır, ancak bozuk sayfalar, sağlama toplamı hatası ve kullanıcı verileri olumsuz etkileyebilir, genel donanım hataları da algılayabilir.

    DBCC CHECKDB tam bir çalışması önceki sürümlerinde oldukça uzun sürebilir.Bu davranış oluşur:

    • Mantıksal denetimleri, daha kapsamlı olur.

    • Bazı alt düzeydeki yapıları denetlenecek daha karmaşıktır.

    • Birçok yeni denetimleri yeni özellikler ortaya.

    Bu nedenle PHYSICAL_ONLY seçeneğini kullanarak bir çok daha kısa çalışma zamanı için DBCC CHECKDB büyük veritabanlarını neden olabilir ve üretim sistemlerinde sık kullanım için önerilir.Yine de tam bir DBCC CHECKDB çalışması düzenli olarak yapılması önerilir.Sıklığı bu çalışır, tek işletmeler ve üretim ortamlarında belirli etkenlere bağlıdır.

    PHYSICAL_ONLY her zaman NO_INFOMSGS anlamına gelir ve onarım seçenekleri herhangi biri ile izin verilmez.

    Not

    Tüm atlamak DBCC CHECKDB PHYSICAL_ONLY neden belirtilmesi, FILESTREAM veri denetler.

  • DATA_PURITY
    Veritabanı için geçerli veya aralık dışı sütun değerleri denetlemek, DBCC CHECKDB neden olur.Örneğin, büyük veya daha az kabul edilebilir aralık için tarih ve saat değerleri içeren sütunlar DBCC CHECKDB algılardatetimeveri türü; veyadecimalveya 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çinSQL Server 2005ve daha sonra sütun değeri bütünlük denetimleri varsayılan olarak etkindir ve DATA_PURITY seçeneği. gerektirmeyenVeritabanının önceki sürümlerinden yükseltmeSQL Serversütun değeri denetler varsayılan etkinleştirilmez kadar ile DBCC CHECKDB DATA_PURITY çalıştırma hatası boş veritabanı.Bundan sonra DBCC CHECKDB varsayılan değeri sütun bütünlüğünü denetler.Nasıl CHECKDB etkilenmiş veritabanı önceki sürümlerinden yükseltme hakkında daha fazla bilgiSQL Serverbakın açıklamalar bölümünde daha sonra bu konuda.

    PHYSICAL_ONLY belirtilmezse, sütun bütünlük denetimleri gerçekleştirilmez.

    DBCC onarım seçenekleri kullanarak bu seçeneği tarafından bildirilen doğrulama hatası sabit olamaz.El ile bu hataları giderme hakkında daha fazla bilgi için bkz: Bilgi Bankası makalesi 923247: SQL Server 2005'te 2570 DBCC sorun giderme hata.

Remarks

Önceki sürümlerindeSQL Server, her tablo ve dizin başına satır sayısı ve Sayfa sayıları yanlış olur.Belirli koşullar altında bu değerler en az biri bile negatif hale gelebilir.InSQL Server 2005ve daha sonra bu değerleri her zaman doğru korunur.Nedenle, veritabanı üzerinde oluşturulurSQL Server 2005ve daha sonra hiçbir zaman yanlış sayıları içermelidir; ancak, veritabanı, programına yükseltmeSQL Server 2005daha sonra might.Bu veritabanında depolanan tüm verilerin bozulma değildir.Bu herhangi bir negatif olduğunda algılamak için DBCC CHECKDB geliştirilmiştir.DBCC CHECKDB çıktı, negatif sayıları algılanır içeren bir uyarı ve çalıştırmak için öneriDBCC UPDATEUSAGE sorunu. düzeltmek için

DBCC CHECKDB devre dışı bırakılmış dizini inceleyin.Devre dışı bırakılmış dizinler hakkında daha fazla bilgi için bkz:Dizinleri devre dışı bırakma.

Bir kullanıcı tanımlı tür bayt olan sipariş edildi olarak işaretlenir, yalnızca olmalıdır kullanıcı tanımlı tür bir seri hale getirme.Kullanıcı tanımlı türler bayt sipariş, tutarlı bir seri hale getirme sahip hata 2537 DBCC CHECKDB çalıştırdığınızda neden olur.Daha fazla bilgi için bkz:Kullanıcı tanımlı tür gereksinimleri.

İçinKaynak veritabanı yalnızca tek kullanıcı modu değiştirilebilir ve DBCC CHECKDB komutu üzerinde doğrudan çalıştırılamaz.Ancak, DBCC CHECKDB yürütüldüğünde karşıasıl veritabanı, ikinci bir CHECKDB da dahili olarak Resourceveritabanını. üzerinde çalışan Yani, DBCC CHECKDB ek sonuçlar döndürebilir.Komut seçeneği ayarladığınızda veya PHYSICAL_ONLY veya ESTIMATEONLY seçeneği ayarladığınızda ek sonuç kümesini döner.

SürümlerindeSQL Server 2005SP2 ' nin önce DBCC CHECKDB çalıştırmak temizler örnek için plan önbellekSQL Server.Plan önbelleği temizleniyor, daha sonra tüm yürütme planları recompilation neden olur ve sorgu performansı ani, geçici bir düşüş neden olabilir.SP2 ve sonraki sürümlerinde, DBCC CHECKDB yürütme planı önbellek temizlemez.

Dizinler mantıksal tutarlılığı gerçekleştirme denetler

Mantıksal tutarlılık denetimini yoğun olmayan dizinlerde uyumluluğunu göre değişen düzey veritabanının aşağıdaki gibi:

  • , Uyumlu düzey 100'dür ( SQL Server 2008) veya sonraki sürümü:

    • NOINDEX belirtilmediği sürece, her iki fiziksel DBCC CHECKDB yapar ve tek bir tablo ve tüm kümelenmemiş dizinler mantıksal tutarlılığını denetler.Ancak, XML dizinler, kayma dizinleri ve dizin oluşturulmuş görünümler yalnızca fiziksel tutarlılık denetimleri varsayılan olarak gerçekleştirilir.

    • WITH EXTENDED_LOGICAL_CHECKS belirtilmemişse, dizinli görünüm, XML dizinler ve kayma dizinleri mantıksal denetimleri gerçekleştirilmez, burada yok.Varsayılan olarak, fiziksel tutarlılık denetimleri önce mantıksal tutarlılık denetimleri gerçekleştirilir.NOINDEX de belirtilirse, yalnızca mantıksal denetimleri gerçekleştirilir.

      Bu mantıksal tutarlılık onay başvuru kullanıcı tablo ile dizin nesnesinin iç dizin tablosunu denetler.Harici satırları bulmak için tam bir iç kesişimi ve kullanıcı tablolarını gerçekleştirmek için bir iç sorgu oluşturulur.Bu sorgu çok yüksek bir performans etkisi olabilir ve ilerleme izlenemez.Bu nedenle, yalnızca fiziksel bozulmasına ilgisiz dizin sorunlara şüpheleniyorsanız veya sayı ile EXTENDED_LOGICAL_CHECKS belirtmek öneririz sayfa-düzey sağlaması kapalı ve, sütun - şüphe düzey donanım Bozulması.

    • Dizin filtre uygulanmış bir dizindir, DBCC CHECKDB dizin girişlerini filtre koşulunu karşılamak doğrulamak için tutarlılığını denetler.

  • Uyumluluk düzey 90 veya NOINDEX belirtilmediği sürece, daha az, DBCC CHECKDB fiziksel ve mantıksal tutarlılık denetimleri tek bir tablo veya dizinli görünüm ve tüm alt kümelenmemiş hem de XML dizinler gerçekleştirir.Kayma dizinler desteklenmez.

Bir veritabanı uyumluluk düzeyini öğrenmek için

İç Veritabanı anlık görüntü

DBCC CHECKDB bu denetimleri gerçekleştirmek için gereken işlem tutarlılık için bir iç veritabanı anlık görüntü görüntü görüntü görüntüsü görüntüyü kullanır.Bu komut çalıştırıldığında bu engelleme ve eşzamanlılık sorunlarını önler.Daha fazla bilgi için bkz:Veritabanı anlık görüntü olarak seyrek dosya boyutları'nı anlamave DBCC iç veritabanı anlık görüntü kullanımı bölümündeDBCC (Transact-SQL).anlık görüntü görüntü oluşturulamaz veya TABLOCK belirtilen, kilit gerekli tutarlılık elde etmek için DBCC CHECKDB tutar.Bu durumda, bir veritabanını özel kullanım kilit ayırma denetimleri gerçekleştirmek için gerekli olan ve paylaşılan tablo kilit tablo denetimleri gerçekleştirmek için gerekli değildir.

DBCC CHECKDB başarısız olduğunda karşı çalıştırmakmasterbir iç veritabanı anlık görüntü görüntü görüntü görüntüsü görüntüsünü oluşturduysanız.

DBCC CHECKDB karşı çalışantempdbHer ayırma veya katalog denetim yerine ve almanız gerekir paylaşılan tablo kilidi gerçekleştirilecek tablosunu denetler.Bu, çünkü performans nedenleriyle, veritabanı Snapshot kullanılamıyortempdb.Yani, gerekli işlem tutarlılığı alınamıyor.

Denetleme ve onarma FILESTREAM veri

FILESTREAM, bir veritabanı ve tablo için etkinleştirildiğinde, isteğe bağlı olarak saklayabilirvarbinary(max)ikili büyük nesneleri (BLOB'lar) dosya sistemi.DBCC CHECKDB dosya sisteminde BLOB'lar depolayan bir veritabanı kullanırken, DBCC dosya sistemi ve veritabanı arasındaki bağlantı düzey tutarlılığını denetler.

Bir tablo içeriyorsa, örneğin, birvarbinary(max)FILESTREAM özniteliği, kullandığı sütun DBCC CHECKDB denetleyin, dosya sistemi dizinleri ve dosyaları ve tablo satır, sütun ve arasında bire bir eşleme yok sütun değerleri.REPAIR_ALLOW_DATA_LOSS seçeneği belirtirseniz, DBCC CHECKDB bozulma onarabilirsiniz.DBCC FILESTREAM bozulmayı onarmak için dosya sistemi verileri eksik olan ve herhangi bir dizin ve bir tabloya satır, sütun veya sütun değerine eşleme dosyaları siler, tablo satırlarının silinmesine neden olur.

En iyi yöntemler

Üretim sistemlerinde sık kullanmak için PHYSICAL_ONLY seçeneğini kullanmanızı öneririz.PHYSICAL_ONLY kullanarak önemli ölçüde kısaltır çalışma-saat için büyük bir veritabanında DBCC CHECKDB.DBCC CHECKDB düzenli aralıklarla seçeneği ile çalıştırmanızı öneririz.Bu metinler ne sıklıkta gerçekleştirileceğini bireysel işletmeler ve üretim ortamlarına bağlıdır.

Paralel nesneleri denetleme

Varsayılan olarak, DBCC CHECKDB paralel nesnelerin denetimini gerçekleştirir.Parallelism derecesini otomatik olarak sorgu işlemcisi tarafından belirlenir.Parallelism en büyük ölçüde yalnızca paralel sorgular gibi yapılandırılır.İçin en yüksek işlemci DBCC denetimi için sınırlama kullanınsp_configure.Daha fazla bilgi için bkz:parallelism seçeneği en büyük ölçüde.Paralel denetimi izleme bayrağı 2528 kullanarak devreden çıkarılabilir.Daha fazla bilgi için bkz:İzleme Bayrakları (Transact-SQL).

DBCC hata iletileri anlama

DBCC sonra CHECKDB komutu tamamlandıktan, bir ileti yazılırSQL Serverhata günlüğüDBCC komutu başarıyla yürütür, iletiyi başarılı ve komutu çalıştıran süreyi gösterir.Denetim bir hata nedeniyle tamamlamadan önce DBCC komutunu durdurur, ileti komut sonlandırıldı olduğunu, bir durum değeri ve komutu çalıştırdığınız saat miktarını gösterir.Aşağıdaki tabloda, listeler ve iletide bulunan durum değerleri açıklanmaktadır.

STATE :

Açıklama

0

Hata numarası 8930 ortaya çıktı.Bu bozulma DBCC komutu sona meta verilerinde gösterir.

1

Hata numarası 8967 ortaya çıktı.DBCC iç hata oluştu.

2

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

3

Bu bozulma DBCC komutu sona meta verilerinde gösterir.

4

Assert veya erişim ihlali algılandı.

5

DBCC komutu sona bilinmeyen bir hata oluştu.

Hata bildirimi

Döküm dosyasını (SQLDUMP nnnn .txt) oluşturulan SQL ServerGünlük dizini her DBCC CHECKDB algılar bir bozulma hatası.Özelliğinin kullanımı, veri koleksiyon ve hata raporlama özellikleri örnek için etkinleştirildiSQL Serverdosya otomatik olarak iletilmesi içinMicrosoft.Toplanan veriler geliştirmek için kullanılırSQL Serverişlev.

Döküm dosyasını DBCC CHECKDB komutu ve ek tanılama çıkış sonuçlarını içerir.Sınırlı erişimiSQL Serverhizmet hesabı ve üyelerisysadminrol.Varsayılan olarak,sysadminrolü içeren tüm üyeleri Windows BUILTIN\Administrators grubu ve yerel yönetici grubu.Veri koleksiyon işlemi başarısız olursa DBCC komutu başarısız..

Hata giderme

DBCC CHECKDB tarafından bildirilen hataları, bir ONARIM seçenekleri REPAIR çalıştırmak yerine veritabanının yedek veritabanını geri öneririz.Yedeğiniz varsa, onarım çalışan bildirilen hataları düzeltir.Onarım seçeneğini kullanmak için bildirilen hataların listesini sonunda belirtilir.Ancak REPAIR_ALLOW_DATA_LOSS seçeneğini kullanarak hataları düzeltmek bazı sayfalar ve bu nedenle bazı veriler gerektirebilir.

Bazı durumlarda, değerleri, sütunun veri türünü temel alan geçerli veya aralık dışı veritabanına girilmesi.InSQL Server 2000DBCC CHECKDB olmayan gerçekleştirme aralık veya bütünlüğünü denetler bu sütun değerleri.AncakSQL Server 2005ve daha sonra DBCC CHECKDB algılayabilir sütun değerleri olan geçerli tüm sütun veri türleri.Nedenle, DBCC CHECKDB DATA_PURITY seçeneği, yükseltmeden önceki sürümlerinden veritabanları üzerinde çalışanSQL Serverortaya hazır sütun değeri hata.ÇünküSQL ServerBu hataları otomatik olarak onaramıyor sütun değeri el ile güncelleştirilmelidir.CHECKDB böyle bir hata algılarsa, bir uyarı, hata numarası 2570 ve bilgi etkilenen satır tanımlamak ve el ile hatayı düzeltmek için CHECKDB verir.

Onarım yapılan değişiklikleri geri almak almak kullanıcının kullanıcı işlem altında gerçekleştirilebilir.Onarım geri alınır, veritabanı hata yer alır ve bir yedek kopyadan geri yüklenmesi gerekir.Onarım tamamlandıktan sonra veritabanını yedekleyin.

Veritabanı Acil modunda hataları çözme

, Bir veritabanı küme Acil modunu kullanarakALTER DATABASE deyim DBCC CHECKDB gerçekleştirebilir özel bazı onarımlar veritabanında REPAIR_ALLOW_DATA_LOSS seçeneği belirtilmişse.Bu onarım, fiziksel olarak tutarlı bir durumda yeniden çevrimiçi duruma getirilebilmesi genellikle kurtarılamaz veritabanları için izin verebilir.Bu onarım, son çare olarak ve yalnızca, veritabanını yedekten geri yükleme yükleyemezsiniz zaman kullanılmalıdır.Veritabanı olduğunda küme Acil moda veritabanı READ_ONLY olarak işaretlenmiş günlük devre dışıdır ve üyeleri için kısıtlı erişimsysadminsabit sunucu rolü.

Not

Bir kullanıcı hareketi içinde Acil modunda DBCC CHECKDB komutu çalıştırmak edemez ve işlemin yürütme sonrasında geri almak almak.

Veritabanı Acil modundayken DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS yan tümce ile çalışır, aşağıdaki eylemleri alınır:

  • DBCC CHECKDB g/Ç veya sağlama toplamı hatası erişilemez işaretlenmiş sayfa hataları değil oluşan olarak kullanır.Böylece veritabanından veri kurtarma şansını artırır.

  • Normal günlük tabanlı kurtarma tekniklerini kullanarak veritabanını kurtarmak DBCC CHECKDB çalışır.

  • İşlem günlüğü bozulması nedeniyle, veritabanı kurtarma başarısız olursa, işlem günlüğü yeniden oluşturulur.İşlem günlüğü yeniden oluşturulması işlem tutarlılığı kaybıyla sonuçlanabilir.

DBCC CHECKDB komutu başarılı olursa, fiziksel olarak tutarlı bir durumda veritabanı, veritabanı durumunu ONLINE olarak küme.Ancak, veritabanına bir veya daha fazla işlem tutarsızlık içerebilir.Çalıştırdığınız önerilirDBCC CHECKCONSTRAINTS tüm iş mantığı zayıf noktalardan tanımlamak ve veritabanını. kadar hemen yedeklemek için

Veritabanında DBCC CHECKDB komutu başarısız olursa, onarılamıyor.

DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS, çoğaltılmış veritabanları ile çalışan

DBCC CHECKDB komutunun REPAIR_ALLOW_DATA_LOSS seçeneği ile birlikte çalışan kullanıcı veritabanlarını etkileyebilir (yayın ve Abonelik veritabanlarının) ve dağıtım veritabanı çoğaltma tarafından kullanılır.yayın ve Abonelik veritabanlarının yayımlanan tabloları ve çoğaltma meta veriler tabloları içerir.Bu veritabanlarında aşağıdaki olası sorunları dikkate alın:

  • Yayımlanan tablolar.Bozuk kullanıcı verileri onarmaya CHECKDB işlem tarafından gerçekleştirilen işlemleri çoğaltılması değil:

    • Birleştirme çoğaltma Tetikleyiciler yayınlanan tablolarına değişiklikleri izlemek için kullanır.Satır eklediyseniz, güncelleştirilmiş veya CHECKDB işlem tarafından silinmiş, tetikleyici harekete değil; bu nedenle, değişiklik olmayan yinelenen.

    • İşlemsel kopyalama işlem günlüğü yayınlanan tablolarına değişiklikleri izlemek için kullanır.Günlük Okuyucu Aracısı, daha sonra bu değişiklikleri dağıtım veritabanına taşır.Bazı DBCC onarım Günlük Okuyucu Aracısı oturum açmış olsa da, yinelenemez.Örneğin, CHECKDB işlem tarafından veri sayfa ayırmanın, Günlük Okuyucu Aracısı bu bir DELETE deyim çevirmek değil; bu nedenle, değişiklik olmayan yinelenen.

  • Çoğaltma meta veriler tablolar.Bozuk çoğaltma meta veriler tabloları onarmaya CHECKDB işlem tarafından gerçekleştirilen eylemler, kaldırma ve çoğaltma yeniden yapılandırma gerektirir.

REPAIR_ALLOW_DATA_LOSS seçeneği ile kullanıcı veritabanı veya dağıtım veritabanı DBCC CHECKDB komutu çalıştırmak varsa:

  1. Quiesce sistem: Veritabanı ve tüm diğer veritabanlarında çoğaltma topolojisi etkinliğini durdurur ve tüm düğümlerin. eşitlemek deneyin Daha fazla bilgi için bkz:Nasıl Yapılır: Quiesce bir çoğaltma topolojisi (çoğaltma Transact-SQL programlama).

  2. DBCC CHECKDB çalıştırmak.

  3. DBCC CHECKDB rapor dağıtım veritabanı ya da herhangi bir kullanıcı veritabanı çoğaltma meta veriler tablolarda onarımı için herhangi bir tablo içeriyorsa, kaldırma ve çoğaltma yeniden yapılandırın.Daha fazla bilgi için bkz:Çoğaltma kaldırılıyor.

  4. DBCC CHECKDB rapor onarımı için herhangi bir yinelenen tablo içeriyorsa, yayımlama ve Abonelik veritabanlarının verileri arasında fark olup olmadığını belirlemek için veri doğrulaması gerçekleştirir.Daha fazla bilgi için bkz:Not eşleşen yayımcı ve abone veri.

Sonuç Kümeleri

DBCC CHECKDB aşağıdaki sonucu verir küme.Değerleri, ESTIMATEONLY, PHYSICAL_ONLY veya NO_INFOMSGS seçenekleri belirtilen dışında değişebilir:

DBCC results for 'model'.
Service Broker Msg 9675, Level 10, State 1: Message Types analyzed: 13.
Service Broker Msg 9676, Level 10, State 1: Service Contracts analyzed: 5.
Service Broker Msg 9667, Level 10, State 1: Services analyzed: 3.
Service Broker Msg 9668, Level 10, State 1: Service Queues analyzed: 3.
Service Broker Msg 9669, Level 10, State 1: Conversation Endpoints analyzed: 0.
Service Broker Msg 9674, Level 10, State 1: Conversation Groups analyzed: 0.
Service Broker Msg 9670, Level 10, State 1: Remote Service Bindings analyzed: 0.
DBCC results for 'sys.sysrowsetcolumns'.
There are 630 rows in 7 pages for object 'sys.sysrowsetcolumns'.
DBCC results for 'sys.sysrowsets'.
There are 97 rows in 1 pages for object 'sys.sysrowsets'.
DBCC results for 'sysallocunits'.
There are 195 rows in 3 pages for object 'sysallocunits'.
There are 0 rows in 0 pages for object "sys.sysasymkeys".
DBCC results for 'sys.syssqlguides'.
There are 0 rows in 0 pages for object "sys.syssqlguides".
DBCC results for 'sys.queue_messages_1977058079'.
There are 0 rows in 0 pages for object "sys.queue_messages_1977058079".
DBCC results for 'sys.queue_messages_2009058193'.
There are 0 rows in 0 pages for object "sys.queue_messages_2009058193".
DBCC results for 'sys.queue_messages_2041058307'.
There are 0 rows in 0 pages for object "sys.queue_messages_2041058307".
CHECKDB found 0 allocation errors and 0 consistency errors in database 'model'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

DBCC CHECKDB aşağıdaki sonucu verir küme (NO_INFOMSGS belirtildiğinde ileti):

The command(s) completed successfully.

DBCC CHECKDB aşağıdaki sonucu verir küme PHYSICAL_ONLY ne zaman belirtilir:

DBCC results for 'model'.
CHECKDB found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

DBCC CHECKDB ESTIMATEONLY belirtilen olduğunda aşağıdaki sonucu verir.

Estimated TEMPDB space needed for CHECKALLOC (KB) 
------------------------------------------------- 
13

(1 row(s) affected)

Estimated TEMPDB space needed for CHECKTABLES (KB) 
-------------------------------------------------- 
57

(1 row(s) affected)

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

İzinler

Üyelik gerektirensysadminsabit sunucu rolü veyadb_ownersabit veritabanı rolü.

Örnekler

C.Geçerli hem AdventureWorks veritabanı denetimi

Aşağıdaki örnek yürütürDBCC CHECKDBve geçerli veritabanı içinAdventureWorksveritabanı.

B.Bilgilendirme iletileri engelleniyor geçerli veritabanı denetimi

Aşağıdaki örnek, geçerli veritabanında denetler ve bilgi tüm iletileri bastırır.

Değişiklik Geçmişi

Güncelleştirilmiş içerik

ALL_ERRORMSGS tanımında yeni işlevler SQL Server 2008 SP1'de açıklanan.