DBCC CHECKALLOC (Transact-SQL)

Berlaku untuk:SQL Server Azure SQL DatabaseAzure SQL Managed Instance

Memeriksa konsistensi struktur alokasi ruang disk untuk database tertentu.

Konvensi sintaks Transact-SQL

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 dijalankan DBCC 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

Lihat juga