SQL Server veritabanı içeren bir bilgisayarda DBCC CHECKDB komutunu çalıştırdığınızda hata iletisi

Bu makale, komutu SQL Server veritabanı içeren bir bilgisayarda çalıştırdığınızda DBCC CHECKDB oluşan soruna geçici bir çözüm getirir.

Orijinal ürün sürümü: SQL Server 2008
Özgün KB numarası: 960791

Belirtiler

Aşağıdaki senaryoyu inceleyin:

  • Bir Microsoft SQL Server 2008 veya SQL Server 2005 veritabanını yedekten geri yüklersiniz.

  • Geri yükleme işlemi sırasında veritabanını geri yüklemenizi engelleyen hatalar alırsınız.

  • CONTINUE_AFTER_ERROR seçeneğini kullanarak veritabanını aynı yedeklemeden başarıyla geri yüklersiniz.

Bu senaryoda, SQL Server veritabanını içeren bilgisayarda DBCC CHECKDB komutunu çalıştırdığınızda, aşağıdakine benzer bir hata iletisi alırsınız:

Msg 8967, Düzey 16, Durum 216, Sunucu <sunucusu adı>, Satır 2
DBCC'de daha fazla işlem yapılmasını engelleyen bir iç hata oluştu. Lütfen Müşteri Desteği ile iletişime geçin.
'Veritabanı adı>'< için DBCC sonuçları.

Msg 8921, Düzey 16, Durum 1, Sunucu <sunucusu adı>, Satır 1

Denetim sonlandırıldı. Olgular toplanırken bir hata algılandı. Muhtemelen tempdb alanı yetersiz veya sistem tablosu tutarsız. Önceki hataları denetleyin.

Ayrıca, SQL Server hata günlüğünde aşağıdakine benzer bir ileti görüntülenebilir:

2007-05-26 07:13:49.21 spid58 DBCC, iç veritabanı anlık görüntüsü için günlük LSN'sinin (<LSN) geçerli ucundan büyük bir LSN> içeren bir sayfayla karşılaştı. Sayfa okunamadı (dosya kimliği:sayfa kimliği), veritabanı '<veritabanı adı' (veritabanı kimliği veritabanı kimliği>), LSN = (<LSN>), tür = 32, isInSparseFile = 1. Lütfen bu DBCC komutunu yeniden çalıştırın.

Neden

Bu sorun, komutu veritabanının DBCC CHECKDB tutarlılığını onaylamak için gerekli denetimleri gerçekleştiremezse oluşur. Bu denetimler birçok nedenden dolayı gerçekleştirilemedi. Örneğin, veritabanında meta veri tutarsızlıkları veya veritabanı anlık görüntüsü bozulması gibi temel tutarsızlıklar varsa bu davranış oluşabilir. Bu hatanın belirli nedeni hakkında daha fazla bilgi, hata iletisinde görüntülenen farklı durum incelenerek belirlenebilir. Belirtiler bölümünde açıklanan senaryoda, durum 216 iletisi komutun DBCC CHECKDB LSN günlüğünün sonundan daha büyük bir günlük sırası numarasına (LSN) sahip iç anlık görüntüden bir sayfa okuduğunu gösterir. CONTINUE_AFTER_ERROR seçeneğini kullanarak veritabanlarını geri yüklerseniz bu davranış oluşabilir.

Geçici Çözüm

Bu sorunu geçici olarak çözmek için komutuyla TABLOCK ipucunu DBCC CHECKDB kullanın. Bu, komutun DBCC CHECKDB hata iletisi oluşturmadan tamamlanamalarını sağlar.

TABLOCK ipuçları hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin: İpuçları (Transact-SQL) - Tablo.