Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure 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 CHECKALLOC
etkilemez.
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 tahminitempdb
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