Bagikan melalui


DBCC (Transact-SQL)

Berlaku untuk:SQL Server Azure SQL DatabaseAzure 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 Lakukan
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. Rekam jepret 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 WITH TABLOCK opsi ditentukan.

Rekam jepret database internal tidak dibuat saat perintah DBCC dijalankan:

  • master Terhadap database, dan instans SQL Server berjalan dalam mode pengguna tunggal.
  • Terhadap database selain master, tetapi database telah dimasukkan ke dalam mode pengguna tunggal dengan menggunakan ALTER DATABASE pernyataan .
  • Terhadap database baca-saja.
  • Terhadap database yang telah diatur dalam mode darurat dengan menggunakan ALTER DATABASE pernyataan .
  • Terhadap tempdb. Dalam hal ini, rekam jepret database tidak dapat dibuat karena pembatasan internal.
  • WITH TABLOCK Menggunakan opsi . 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 WITH TABLOCK opsi memerlukan kunci eksklusif database (X). 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 sys.dm_exec_requests katalog berisi informasi tentang kemajuan dan fase eksekusi DBCC CHECKDBperintah , , CHECKFILEGROUPdan CHECKTABLE saat ini. Kolom percent_complete menunjukkan persentase lengkap perintah, dan command kolom 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
DBCC TABLE CHECK 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.
DBCC TABLE REPAIR 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.
DBCC ALLOC CHECK Struktur alokasi dalam database diperiksa selama fase ini.

Catatan:DBCC CHECKALLOC melakukan pemeriksaan yang sama.
Kemajuan tidak dilaporkan
DBCC ALLOC REPAIR Perbaikan database dilakukan selama fase ini jika REPAIR_FAST, , REPAIR_REBUILDatau REPAIR_ALLOW_DATA_LOSS ditentukan, dan ada kesalahan alokasi yang harus diperbaiki. Kemajuan tidak dilaporkan.
DBCC SYS CHECK 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.
DBCC SYS REPAIR Perbaikan database dilakukan selama fase ini jika REPAIR_FAST, , REPAIR_REBUILDatau 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.
DBCC SSB CHECK SQL Server objek Service Broker diperiksa selama fase ini.

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

Catatan: Fase ini tidak dijalankan saat DBCC CHECKTABLE dijalankan.
Kemajuan tidak dilaporkan.
DBCC IVIEW CHECK 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