DBCC UPDATEUSAGE (Transact-SQL)
Berlaku untuk:SQL Server Azure SQL DatabaseAzure SQL Managed Instance
Melaporkan dan mengoreksi ketidakakuratan jumlah halaman dan baris dalam tampilan katalog. Ketidakakuratan ini dapat menyebabkan laporan penggunaan ruang yang salah yang dikembalikan oleh prosedur tersimpan sp_spaceused
sistem.
Sintaks
DBCC UPDATEUSAGE
( { database_name | database_id | 0 }
[ , { table_name | table_id | view_name | view_id }
[ , { index_name | index_id } ] ]
) [ WITH [ NO_INFOMSGS ] [ , ] [ COUNT_ROWS ] ]
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 melaporkan dan memperbaiki statistik penggunaan ruang. Jika 0 ditentukan, database saat ini digunakan. Nama database harus mematuhi aturan untuk pengidentifikasi.
| table_name | table_id | view_name view_id
Nama atau ID tabel atau tampilan terindeks untuk melaporkan dan memperbaiki statistik penggunaan ruang. Nama tabel dan tampilan harus mematuhi aturan untuk pengidentifikasi.
| index_id index_name
ID atau nama indeks yang akan digunakan. Jika tidak ditentukan, pernyataan memproses semua indeks untuk tabel atau tampilan yang ditentukan.
WITH
Memungkinkan opsi ditentukan.
NO_INFOMSGS
Menyembunyikan semua pesan informasi.
COUNT_ROWS
Menentukan bahwa kolom jumlah baris diperbarui dengan jumlah baris saat ini dalam tabel atau tampilan.
Keterangan
DBCC UPDATEUSAGE
mengoreksi baris, halaman yang digunakan, halaman yang dipesan, halaman daun, dan jumlah halaman data untuk setiap partisi dalam tabel atau indeks. Jika tidak ada ketidakakuratan dalam tabel sistem, DBCC UPDATEUSAGE
tidak mengembalikan data. Jika ketidakakuratan ditemukan dan dikoreksi dan WITH NO_INFOMSGS tidak digunakan, DBCC UPDATEUSAGE
mengembalikan baris dan kolom yang sedang diperbarui dalam tabel sistem.
DBCC CHECKDB
telah ditingkatkan untuk mendeteksi kapan jumlah halaman atau baris menjadi negatif. Saat terdeteksi, DBCC CHECKDB
output berisi peringatan dan rekomendasi untuk dijalankan DBCC UPDATEUSAGE
untuk mengatasi masalah tersebut.
Praktik terbaik
Kami merekomendasikan hal-hal berikut:
- Jangan berjalan
DBCC UPDATEUSAGE
secara rutin, karena SQL Server mempertahankan metadata dalam sebagian besar keadaan.DBCC UPDATEUSAGE
harus dijalankan sesuai kebutuhan, misalnya, ketika Anda mencurigai nilai yang salah dikembalikan olehsp_spaceused
.DBCC UPDATEUSAGE
dapat memakan waktu untuk berjalan pada tabel atau database besar. - Pertimbangkan untuk menjalankan
DBCC UPDATEUSAGE
secara rutin (misalnya, mingguan) hanya jika database mengalami modifikasi Bahasa Definisi Data (DDL) yang sering, seperti pernyataan CREATE, ALTER, atau DROP.
Tataan hasil
DBCC UPDATEUSAGE
returns (nilai dapat bervariasi):
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
A. Memperbarui jumlah halaman atau baris atau keduanya untuk semua objek dalam database saat ini
Contoh berikut menentukan 0
nama database dan DBCC UPDATEUSAGE
laporan informasi jumlah halaman atau baris yang diperbarui untuk database saat ini.
DBCC UPDATEUSAGE (0);
GO
B. Memperbarui jumlah halaman atau baris atau keduanya untuk AdventureWorks, dan menyembunyikan pesan informasi
Contoh berikut menentukan AdventureWorks2022
sebagai nama database dan menekan semua pesan informasi.
DBCC UPDATEUSAGE (AdventureWorks2022) WITH NO_INFOMSGS;
GO
C. Memperbarui jumlah halaman atau baris atau keduanya untuk tabel Karyawan
Contoh berikut melaporkan informasi jumlah halaman atau baris yang diperbarui untuk Employee
tabel dalam AdventureWorks2022
database.
DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee');
GO
D. Memperbarui jumlah halaman atau baris atau keduanya untuk indeks tertentu dalam tabel
Contoh berikut menentukan IX_Employee_ManagerID
sebagai nama indeks.
DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee', IX_Employee_OrganizationLevel_OrganizationNode);
GO