DBCC CHECKALLOC (Transact-SQL)
Berlaku untuk:SQL Server Azure SQL DatabaseAzure SQL Managed Instance
Memeriksa konsistensi struktur alokasi ruang disk untuk database tertentu.
Sintaks
DBCC CHECKALLOC
[
( database_name | database_id | 0
[ , NOINDEX
| , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]
)
[ WITH
{
[ ALL_ERRORMSGS ]
[ , NO_INFOMSGS ]
[ , TABLOCK ]
[ , ESTIMATEONLY ]
}
]
]
Catatan
Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.
Argumen
| database_name database_id | 0
Nama atau ID database untuk memeriksa alokasi dan penggunaan halaman.
Jika tidak ditentukan, atau jika 0 ditentukan, database saat ini digunakan.
Nama database harus mengikuti aturan untuk pengidentifikasi.
NOINDEX
Menentukan bahwa indeks non-kluster untuk tabel pengguna tidak boleh diperiksa.
NOINDEX
dipertahankan hanya untuk kompatibilitas mundur dan tidak memengaruhi DBCC CHECKALLOC
.
REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD
Menentukan bahwa DBCC CHECKALLOC
memperbaiki kesalahan yang ditemukan. database_name harus dalam mode pengguna tunggal.
REPAIR_ALLOW_DATA_LOSS
Mencoba memperbaiki kesalahan apa pun yang ditemukan. Perbaikan ini dapat menyebabkan beberapa kehilangan data.
REPAIR_ALLOW_DATA_LOSS
adalah satu-satunya opsi yang memungkinkan kesalahan alokasi diperbaiki.REPAIR_FAST
Sintaks dipertahankan hanya untuk kompatibilitas mundur. Tidak ada tindakan perbaikan yang dilakukan.
REPAIR_REBUILD
Tidak dapat diterapkan.
Penting
Gunakan opsi REPAIR hanya sebagai upaya terakhir. Untuk memperbaiki kesalahan, kami sarankan memulihkan dari cadangan. Operasi perbaikan tidak mempertimbangkan batasan apa pun yang mungkin ada di atau di antara tabel. Jika tabel yang ditentukan terlibat dalam satu atau beberapa batasan, sebaiknya jalankan DBCC CHECKCONSTRAINTS
setelah operasi perbaikan. Jika Anda harus menggunakan REPAIR, jalankan DBCC CHECKDB
tanpa opsi perbaikan untuk menemukan tingkat perbaikan yang akan digunakan. Jika Anda menggunakan tingkat , REPAIR_ALLOW_DATA_LOSS
kami sarankan Anda mencadangkan database sebelum menjalankan DBCC CHECKDB
dengan opsi ini.
WITH
Mengaktifkan opsi yang akan ditentukan.
ALL_ERRORMSGS
Menampilkan semua pesan kesalahan. Semua pesan kesalahan ditampilkan secara default. Menentukan atau menghilangkan opsi ini tidak berpengaruh.
NO_INFOMSGS
Menyembunyikan semua pesan informasi dan laporan ruang yang digunakan.
TABLOCK
Menyebabkan perintah DBCC mendapatkan kunci database eksklusif.
ESTIMASI SAJA
Menampilkan perkiraan jumlah
tempdb
ruang yang diperlukan untuk dijalankanDBCC CHECKALLOC
ketika semua opsi lainnya ditentukan.
Keterangan
DBCC CHECKALLOC
memeriksa alokasi semua halaman dalam database, terlepas dari jenis halaman atau jenis objek tempat halaman tersebut berada. Ini juga memvalidasi berbagai struktur internal yang digunakan untuk melacak halaman-halaman ini dan hubungan di antaranya.
Jika NO_INFOMSGS
tidak ditentukan, DBCC CHECKALLOC
mengumpulkan informasi penggunaan ruang untuk semua objek dalam database. Informasi ini dicetak bersama dengan kesalahan apa pun yang ditemukan.
Catatan
Fungsionalitas DBCC CHECKALLOC
ini disertakan dalam DBCC CHECKDB dan DBCC CHECKFILEGROUP. Ini berarti Bahwa Anda tidak perlu menjalankan DBCC CHECKALLOC
secara terpisah dari pernyataan ini. DBCC CHECKALLOC
tidak memeriksa data FILESTREAM. FILESTREAM menyimpan objek besar biner (BLOBS) pada sistem file.
Rekam jepret database internal
DBCC CHECKALLOC
menggunakan rekam jepret database internal untuk memberikan konsistensi transaksi yang diperlukan untuk melakukan pemeriksaan ini. Jika rekam jepret tidak dapat dibuat, atau TABLOCK
ditentukan, DBCC CHECKALLOC
mencoba memperoleh kunci eksklusif (X
) pada database untuk mendapatkan konsistensi yang diperlukan.
Catatan
Menjalankan DBCC CHECKALLOC
terhadap tempdb
tidak melakukan pemeriksaan apa pun. Ini karena, untuk alasan performa, rekam jepret database tidak tersedia di tempdb
. Ini berarti bahwa konsistensi transaksi yang diperlukan tidak dapat diperoleh. Hentikan dan mulai Mesin Database untuk mengatasi masalah alokasi apa pun tempdb
. Tindakan ini menghilangkan dan membuat tempdb
ulang database.
Memahami pesan kesalahan DBCC
DBCC CHECKALLOC
Setelah perintah selesai, pesan ditulis ke log kesalahan SQL Server. Jika perintah DBCC berhasil dijalankan, pesan menunjukkan keberhasilan penyelesaian, dan jumlah waktu yang dijalankan perintah. Jika perintah DBCC berhenti sebelum menyelesaikan pemeriksaan karena kesalahan, pesan menunjukkan perintah dihentikan, nilai status, dan jumlah waktu perintah dijalankan. Tabel berikut ini mencantumkan dan menjelaskan nilai status yang bisa disertakan dalam pesan.
Provinsi | Deskripsi |
---|---|
0 | Nomor kesalahan 8930 dinaikkan. Ini menunjukkan kerusakan metadata yang menyebabkan perintah DBCC dihentikan. |
1 | Nomor kesalahan 8967 dinaikkan. Terjadi kesalahan DBCC internal. |
2 | Kegagalan terjadi selama perbaikan database mode darurat. |
3 | Ini menunjukkan kerusakan metadata yang menyebabkan perintah DBCC dihentikan. |
4 | Penegasan atau pelanggaran akses terdeteksi. |
5 | Terjadi kesalahan yang tidak diketahui yang menghentikan perintah DBCC. |
Pelaporan kesalahan
File cadangan mini (SQLDUMP<nnnn>.txt
) dibuat di direktori SQL Server LOG
setiap kali DBCC CHECKALLOC
mendeteksi kesalahan kerusakan. Saat fitur pengumpulan data Penggunaan Fitur dan Pelaporan Kesalahan diaktifkan untuk instans SQL Server, file secara otomatis diteruskan ke Microsoft. Data yang dikumpulkan digunakan untuk meningkatkan fungsionalitas SQL Server.
File cadangan berisi hasil DBCC CHECKALLOC
perintah dan output diagnostik tambahan. File telah membatasi daftar kontrol akses diskresi (DACL). Akses terbatas pada akun layanan SQL Server dan anggota peran sysadmin. Secara default, peran sysadmin berisi semua anggota grup Windows BUILTIN\Administrators dan grup administrator lokal. Perintah DBCC tidak gagal jika proses pengumpulan data gagal.
Mengatasi kesalahan
Jika DBCC CHECKALLOC
melaporkan kesalahan, kami sarankan Anda memulihkan database dari cadangan database alih-alih menjalankan perbaikan. Jika cadangan tidak ada, menjalankan perbaikan dapat memperbaiki kesalahan yang dilaporkan; namun, memperbaiki kesalahan mungkin memerlukan beberapa halaman, dan oleh karena itu data, untuk dihapus.
Perbaikan dapat dilakukan dalam transaksi pengguna. Ini memungkinkan perubahan digulung balik. Jika perubahan digulung balik, database masih akan berisi kesalahan, dan harus dipulihkan dari cadangan. Setelah perbaikan selesai, cadangkan database.
Tataan hasil
Tabel berikut ini menjelaskan informasi yang DBCC CHECKALLOC
dikembalikan.
Item | Deskripsi |
---|---|
FirstIAM | Penggunaan internal saja. |
Root | Penggunaan internal saja. |
Halaman halaman | Jumlah halaman data. |
Halaman yang digunakan | Halaman yang dialokasikan. |
Jangkauan khusus | Jangkauan yang dialokasikan untuk objek . Jika halaman alokasi campuran digunakan, mungkin ada halaman yang dialokasikan tanpa batas. |
DBCC CHECKALLOC
juga melaporkan ringkasan alokasi untuk setiap indeks dan partisi di setiap file. Ringkasan ini menjelaskan distribusi data.
Item | Deskripsi |
---|---|
Halaman yang dipesan | Halaman yang dialokasikan untuk indeks dan halaman yang tidak digunakan dalam jangkauan yang dialokasikan. |
Halaman yang digunakan | Halaman yang dialokasikan dan digunakan oleh indeks. |
ID Partisi | Penggunaan internal saja. |
ID unit alokasi | Penggunaan internal saja. |
Data dalam baris | Halaman berisi data indeks atau timbunan. |
Data LOB | Pages berisi data varchar(max), nvarchar(max), varbinary(max), text, ntext, xml, dan image . |
Data luapan baris | Halaman berisi data kolom panjang variabel yang telah didorong dari baris. |
DBCC CHECKALLOC
mengembalikan tataan hasil berikut (nilai dapat bervariasi), kecuali ketika ESTIMATEONLY
atau NO_INFOMSGS
ditentukan.
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.
Ketika ESTIMATEONLY
ditentukan, DBCC CHECKALLOC
mengembalikan tataan hasil berikut.
Estimated TEMPDB space needed for CHECKALLOC (KB)
-------------------------------------------------
34
(1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Izin
Memerlukan keanggotaan dalam peran server tetap sysadmin atau peran database tetap db_owner.
Contoh
Contoh berikut dijalankan DBCC CHECKALLOC
untuk database saat ini dan untuk AdventureWorks2022
database.
-- Check the current database.
DBCC CHECKALLOC;
GO
-- Check the AdventureWorks2022 database.
DBCC CHECKALLOC (AdventureWorks2022);
GO