Aracılığıyla paylaş


DBCC CHECKALLOC (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği

Belirtilen veritabanı için disk alanı ayırma yapılarının tutarlılığını denetler.

Transact-SQL söz dizimi kuralları

Sözdizimi

DBCC CHECKALLOC
[
    ( database_name | database_id | 0
      [ , NOINDEX
      | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]
    )
    [ WITH
        {
          [ ALL_ERRORMSGS ]
          [ , NO_INFOMSGS ]
          [ , TABLOCK ]
          [ , ESTIMATEONLY ]
        }
    ]
]

Bağımsız değişken

database_name | database_id | 0

Ayırmanın ve sayfa kullanımının denetlendiği veritabanının adı veya kimliği.

Belirtilmezse veya 0 belirtilirse geçerli veritabanı kullanılır.

Veritabanı adları tanımlayıcıları için kurallara uymalıdır.

NOINDEX

Kullanıcı tabloları için kümelenmemiş dizinlerin denetlenmemesi gerektiğini belirtir.

NOINDEX yalnızca geriye dönük uyumluluk için korunur ve DBCC CHECKALLOCetkilemez.

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD

DBCC CHECKALLOC bulunan hataları onardığını belirtir. database_name tek kullanıcı modunda olmalıdır.

  • REPAIR_ALLOW_DATA_LOSS

    Bulunan hataları onarmaya çalışır. Bu onarımlar veri kaybına neden olabilir. REPAIR_ALLOW_DATA_LOSS, ayırma hatalarının onarılmasına izin veren tek seçenektir.

  • REPAIR_FAST

    Söz dizimi yalnızca geriye dönük uyumluluk için korunur. Hiçbir onarım eylemi gerçekleştirilmez.

  • REPAIR_REBUILD

    Uygulanamaz.

Ö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 CHECKDB bir onarım seçeneği olmadan çalıştırın. REPAIR_ALLOW_DATA_LOSS düzeyini kullanıyorsanız, bu seçenekle DBCC CHECKDB çalıştırmadan önce veritabanını yedeklemenizi öneririz.

İLE

Seçeneklerin belirtilmesine olanak tanır.

  • ALL_ERRORMSGS

    Tüm hata iletilerini 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.

  • NO_INFOMSGS

    Tüm bilgilendirme iletilerini ve kullanılan alan raporunu gizler.

  • TABLOCK

    DBCC komutunun özel veritabanı kilidi almasına neden olur.

  • TAHMINE GÖRE

    Diğer tüm seçenekler belirtildiğinde DBCC CHECKALLOC çalıştırmak için gereken tahmini tempdb alanını görüntüler.

Açıklamalar

DBCC CHECKALLOC, ait oldukları sayfa türüne veya nesne türüne bakılmaksızın veritabanındaki tüm sayfaların ayrılmasını denetler. Ayrıca, bu sayfaları ve aralarındaki ilişkileri izlemek için kullanılan çeşitli iç yapıları doğrular.

NO_INFOMSGS belirtilmezse, DBCC CHECKALLOC veritabanındaki tüm nesneler için alan kullanımı bilgilerini toplar. Bu bilgiler, bulunan tüm hatalarla birlikte yazdırılır.

Not

DBCC CHECKALLOC işlevi DBCC CHECKDB ve DBCC CHECKFILEGROUPdahil edilir. Bu, DBCC CHECKALLOC bu deyimlerden ayrı olarak çalıştırmanız gerekmediği anlamına gelir. DBCC CHECKALLOC FILESTREAM verilerini denetlemez. FILESTREAM, dosya sisteminde ikili büyük nesneleri (BLOBS) depolar.

İç veritabanı anlık görüntüsü

DBCC CHECKALLOC, bu denetimleri gerçekleştirmek için gereken işlem tutarlılığını sağlamak için bir iç veritabanı anlık görüntüsü kullanır. Anlık görüntü oluşturulamazsa veya TABLOCK belirtilirse, DBCC CHECKALLOC gerekli tutarlılığı elde etmek için veritabanında özel (X) kilidi almaya çalışır.

Not

tempdb karşı DBCC CHECKALLOC çalıştırmak hiçbir denetim gerçekleştirmez. 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. tempdb ayırma sorunlarını çözmek için Veritabanı Altyapısı'nı durdurun ve başlatın. Bu eylem, tempdb veritabanını bırakır ve yeniden oluşturur.

DBCC hata iletilerini anlama

DBCC CHECKALLOC 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 LOG dizininde, DBCC CHECKALLOC bir bozulma hatası algılandığında bir mini döküm dosyası (SQLDUMP<nnnn>.txt) 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 CHECKALLOC 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 CHECKALLOC herhangi bir hata bildirirse, veritabanını onarım çalıştırmak yerine veritabanı yedeğinden geri yüklemenizi öneririz. Yedekleme yoksa, onarım çalıştırmak bildirilen hataları düzeltebilir; ancak hataların düzeltilmesi için bazı sayfaların ve dolayısıyla verilerin silinmesi gerekebilir.

Bir kullanıcı işleminde onarım gerçekleştirilebilir. Bu, değişikliklerin geri alınmasına olanak tanır. Değişiklikler geri alınırsa, veritabanı yine de hatalar içerir ve bir yedekten geri yüklenmesi gerekir. Onarımlar tamamlandıktan sonra veritabanını yedekleyin.

Sonuç kümeleri

Aşağıdaki tablolarda, DBCC CHECKALLOC'nin döndürdüğü bilgiler açıklanmaktadır.

Madde Açıklama
firstIAM Yalnızca iç kullanım.
kök Yalnızca iç kullanım.
Dpages Veri sayfası sayısı.
kullanılan Sayfaları Ayrılan sayfalar.
Ayrılmış kapsamlar Nesneye ayrılan kapsamlar.

Karma ayırma sayfaları kullanılıyorsa, kapsamları olmadan ayrılan sayfalar olabilir.

DBCC CHECKALLOC ayrıca her dosyadaki her dizin ve bölüm için bir ayırma özeti raporlar. Bu özet, verilerin dağılımını açıklar.

Madde Açıklama
Ayrılmış sayfalar Dizine ayrılan sayfalar ve ayrılan kapsamlarda kullanılmayan sayfalar.
Kullanılan sayfalar Dizin tarafından ayrılan ve kullanılan sayfalar.
Bölüm Kimliği Yalnızca iç kullanım.
Ayırma birimi kimliği Yalnızca iç kullanım.
Satır içi veriler Sayfalar dizin veya yığın verileri içerir.
LOB verileri Sayfalar varchar(max), nvarchar(max), varbinary(max), metin, ntext, xmlve görüntü verileri içerir.
Satır taşması verileri Sayfalar, satır dışına gönderilen değişken uzunlukta sütun verileri içerir.

DBCC CHECKALLOC, ESTIMATEONLY veya NO_INFOMSGS belirtilmediği durumlar dışında aşağıdaki sonuç kümesini döndürür (değerler değişebilir).

DBCC results for 'master'.
***************************************************************
Table sysobjects                Object ID 1.
Index ID 1         FirstIAM (1:11)   Root (1:12)    Dpages 22.
    Index ID 1. 24 pages used in 5 dedicated extents.
Index ID 2         FirstIAM (1:1368)   Root (1:1362)    Dpages 10.
    Index ID 2. 12 pages used in 2 dedicated extents.
Index ID 3         FirstIAM (1:1392)   Root (1:1408)    Dpages 4.
    Index ID 3. 6 pages used in 0 dedicated extents.
Total number of extents is 7.
***************************************************************
'...'
***************************************************************
Table spt_server_info                Object ID 1938105945.
Index ID 1         FirstIAM (1:520)   Root (1:508)    Dpages 1.
    Index ID 1. 3 pages used in 0 dedicated extents.
Total number of extents is 0.
***************************************************************
Processed 52 entries in sysindexes for database ID 1.
File 1. Number of extents = 210, used pages = 1126, reserved pages = 1280.
           File 1 (number of mixed extents = 73, mixed pages = 184).
    Object ID 1, Index ID 0, data extents 5, pages 24, mixed extent pages 9.
'...'
    Object ID 1938105945, Index ID 0, data extents 0, pages 3, mixed extent pages 3.
Total number of extents = 210, used pages = 1126, reserved pages = 1280 in this database.
       (number of mixed extents = 73, mixed pages = 184) in this database.
CHECKALLOC found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC results for 'master'.
***************************************************************
Table sys.sysrowsetcolumns                Object ID 4.
Index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data). FirstIAM (1:98). Root (1:94). Dpages 7.
Index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data). 9 pages used in 1 dedicated extents.
Index ID 1, partition ID 262144, alloc unit ID 262398 (type Row-overflow data). FirstIAM (0:0). Root (0:0). Dpages 0.
Index ID 1, partition ID 262144, alloc unit ID 262398 (type Row-overflow data). 0 pages used in 0 dedicated extents.
Total number of extents is 1.
...
***************************************************************
Processed 201 entries in system catalog for database ID 1.
File 1. Number of extents = 44, used pages = 300, reserved pages = 345.
           File 1 (number of mixed extents = 29, mixed pages = 225).
    Object ID 4, index ID 1, partition ID 262144, alloc unit ID 262144 (type In-row data), data extents 1, pages 9, mixed extent pages 8.
    Object ID 5, index ID 1, partition ID 327680, alloc unit ID 327680 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
    Object ID 7, index ID 1, partition ID 458752, alloc unit ID 458752 (type In-row data), data extents 0, pages 5, mixed extent pages 5.
    Object ID 8, index ID 0, partition ID 524288, alloc unit ID 524288 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
    Object ID 13, index ID 1, partition ID 851968, alloc unit ID 851968 (type In-row data), data extents 1, pages 9, mixed extent pages 8.
    Object ID 15, index ID 1, partition ID 983040, alloc unit ID 983040 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
    Object ID 26, index ID 1, partition ID 281474978414592, alloc unit ID 1703937 (type In-row data), data extents 0, pages 3, mixed extent pages 3.
    Object ID 27, index ID 1, partition ID 281474978480128, alloc unit ID 1769473 (type In-row data), data extents 0, pages 3, mixed extent pages 3.
    Object ID 27, index ID 2, partition ID 562949955190784, alloc unit ID 1769474 (type In-row data), index extents 0, pages 3, mixed extent pages 3.
...
    Object ID 1179151246, index ID 1, partition ID 72057594038845440, alloc unit ID 13435136 (type In-row data), data extents 2, pages 18, mixed extent pages 8.
    Object ID 1179151246, index ID 2, partition ID 72057594038910976, alloc unit ID 13566208 (type In-row data), index extents 1, pages 16, mixed extent pages 8.
    Object ID 1911677858, index ID 0, partition ID 72057594039631872, alloc unit ID 15073536 (type In-row data), data extents 0, pages 2, mixed extent pages 2.
Total number of extents = 41, used pages = 289, reserved pages = 323 in this database.
       (number of mixed extents = 27, mixed pages = 211) in this database.
CHECKALLOC found 0 allocation errors and 0 consistency errors in database 'master'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

ESTIMATEONLY belirtildiğinde, DBCC CHECKALLOC aşağıdaki sonuç kümesini döndürür.

Estimated TEMPDB space needed for CHECKALLOC (KB)
-------------------------------------------------
34
  
(1 row(s) affected)
  
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

İzinler

Sysadmin sabit sunucu rolüne veya db_owner sabit veritabanı rolüne üyelik gerektirir.

Örnekler

Aşağıdaki örnek, geçerli veritabanı ve AdventureWorks2022 veritabanı için DBCC CHECKALLOC yürütür.

-- Check the current database.
DBCC CHECKALLOC;
GO
-- Check the AdventureWorks2022 database.
DBCC CHECKALLOC (AdventureWorks2022);
GO

Ayrıca bkz.