DBCC (Transact-SQL)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database YesAzure SQL Managed Instance

Bahasa pemrograman Transact-SQL menyediakan pernyataan DBCC yang bertindak sebagai Perintah Konsol Database untuk SQL Server.

Pernyataan Perintah Konsol Database dikelompokkan ke dalam kategori berikut.

Kategori perintah Melakukan
Pemeliharaan Tugas pemeliharaan pada database, indeks, atau grup file.
Lain-lain Tugas lain-lain seperti mengaktifkan bendera pelacakan atau menghapus DLL dari memori.
Informasi Tugas yang mengumpulkan dan menampilkan berbagai jenis informasi.
Validasi Operasi validasi pada database, tabel, indeks, katalog, grup file, atau alokasi halaman database.

Perintah DBCC mengambil parameter input dan mengembalikan nilai. Semua parameter perintah DBCC dapat menerima literal Unicode dan DBCS.

Penggunaan Rekam Jepret Database Internal DBCC

Perintah DBCC berikut beroperasi pada rekam jepret database baca-saja internal yang dibuat Mesin Database. Ini mencegah masalah pemblokiran dan konkurensi ketika perintah ini dijalankan. Untuk informasi selengkapnya, lihat Rekam Jepret Database (SQL Server).

  • DBCC CHECKALLOC
  • DBCC CHECKCATALOG
  • DBCC CHECKDB
  • DBCC CHECKFILEGROUP
  • DBCC CHECKTABLE

Saat Anda menjalankan salah satu perintah DBCC ini, Mesin Database membuat rekam jepret database dan membawanya ke status konsisten secara transaksional. Perintah DBCC kemudian menjalankan pemeriksaan terhadap rekam jepret ini. Setelah perintah DBCC selesai, rekam jepret ini dihilangkan.

Terkadang rekam jepret database internal tidak diperlukan atau tidak dapat dibuat. Ketika ini terjadi, perintah DBCC dijalankan terhadap database aktual. Jika database online, perintah DBCC menggunakan penguncian tabel untuk memastikan konsistensi objek yang diperiksa. Perilaku ini sama seperti jika opsi WITH TABLOCK ditentukan.

Rekam jepret database internal tidak dibuat saat perintah DBCC dijalankan:

  • Terhadap master, dan instans SQL Server berjalan dalam mode pengguna tunggal.
  • Terhadap database selain master, tetapi database telah dimasukkan ke dalam mode pengguna tunggal dengan menggunakan pernyataan ALTER DATABASE.
  • Terhadap database baca-saja.
  • Terhadap database yang telah diatur dalam mode darurat dengan menggunakan pernyataan ALTER DATABASE.
  • Melawan tempdb. Dalam hal ini, rekam jepret database tidak dapat dibuat karena pembatasan internal.
  • Menggunakan opsi WITH TABLOCK. Dalam hal ini, DBCC mematuhi permintaan dengan tidak membuat rekam jepret database.

Perintah DBCC menggunakan kunci tabel alih-alih rekam jepret database internal saat perintah dijalankan terhadap yang berikut ini:

  • Grup file baca-saja
  • Sistem file FAT
  • Volume yang tidak mendukung 'aliran bernama'
  • Volume yang tidak mendukung 'aliran alternatif'

Catatan

Mencoba menjalankan DBCC CHECKALLOC, atau bagian yang setara dari DBCC CHECKDB, dengan menggunakan opsi WITH TABLOCK memerlukan kunci X database. Kunci database ini tidak dapat diatur pada tempdb atau master dan mungkin akan gagal pada semua database lainnya.

Catatan

DBCC CHECKDB gagal ketika dijalankan terhadap master jika rekam jepret database internal tidak dapat dibuat.

Pelaporan Kemajuan untuk Perintah DBCC

Tampilan katalog sys.dm_exec_requests berisi informasi tentang kemajuan dan fase eksekusi perintah DBCC CHECKDB, CHECKFILEGROUP, dan CHECKTABLE saat ini. Kolom percent_complete menunjukkan persentase lengkap perintah, dan kolom perintah melaporkan fase eksekusi perintah saat ini.

Definisi unit kemajuan tergantung pada fase eksekusi perintah DBCC saat ini. Terkadang kemajuan dilaporkan pada granularitas halaman database, dalam fase lain dilaporkan pada granularitas database tunggal atau perbaikan alokasi. Tabel berikut menjelaskan setiap fase eksekusi, dan granularitas di mana perintah melaporkan kemajuan.

Fase Eksekusi Deskripsi Granularitas pelaporan kemajuan
PEMERIKSAAN TABEL DBCC Konsistensi logis dan fisik objek dalam database diperiksa selama fase ini. Kemajuan yang dilaporkan di tingkat halaman database.

Nilai pelaporan kemajuan diperbarui untuk setiap 1000 halaman database yang diperiksa.
PERBAIKAN TABEL DBCC Perbaikan database dilakukan selama fase ini jika REPAIR_FAST, REPAIR_REBUILD, atau REPAIR_ALLOW_DATA_LOSS ditentukan, dan ada kesalahan objek yang harus diperbaiki. Kemajuan dilaporkan pada tingkat perbaikan individu.

Penghitung diperbarui untuk setiap perbaikan yang selesai.
PEMERIKSAAN ALOKASI DBCC Struktur alokasi dalam database diperiksa selama fase ini.

Catatan: DBCC CHECKALLOC melakukan pemeriksaan yang sama.
Kemajuan tidak dilaporkan
PERBAIKAN ALOKASI DBCC Perbaikan database dilakukan selama fase ini jika REPAIR_FAST, REPAIR_REBUILD, atau REPAIR_ALLOW_DATA_LOSS ditentukan, dan ada kesalahan alokasi yang harus diperbaiki. Kemajuan tidak dilaporkan.
PEMERIKSAAN DBCC SYS Tabel sistem database diperiksa selama fase ini. Kemajuan yang dilaporkan di tingkat halaman database.

Nilai pelaporan kemajuan diperbarui untuk setiap 1000 halaman database yang diperiksa.
PERBAIKAN DBCC SYS Perbaikan database dilakukan selama fase ini jika REPAIR_FAST, REPAIR_REBUILD, atau REPAIR_ALLOW_DATA_LOSS ditentukan, dan ada kesalahan tabel sistem yang harus diperbaiki. Kemajuan dilaporkan pada tingkat perbaikan individu.

Penghitung diperbarui untuk setiap perbaikan yang selesai.
PEMERIKSAAN DBCC SSB Objek SQL Server Service Broker diperiksa selama fase ini.

Catatan: Fase ini tidak dijalankan ketika DBCC CHECKTABLE dijalankan.
Kemajuan tidak dilaporkan.
DBCC CHECKCATALOG Konsistensi katalog database diperiksa selama fase ini.

Catatan: Fase ini tidak dijalankan ketika DBCC CHECKTABLE dijalankan.
Kemajuan tidak dilaporkan.
PEMERIKSAAN IVIEW DBCC Konsistensi logis dari setiap tampilan terindeks yang ada dalam database diperiksa selama fase ini. Kemajuan yang dilaporkan pada tingkat tampilan database individual yang sedang diperiksa.

Pernyataan Informasi

Pernyataan Validasi

Pernyataan Pemeliharaan

Pernyataan Lain-lain