Aracılığıyla paylaş


DBCC GÜNCELLEME KULLANIMI (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Katalog görünümlerindeki sayfaları ve satır sayısı yanlışlarını raporlar ve düzeltir. Bu yanlışlıklar, sp_spaceused sistem saklı yordamı tarafından döndürülen yanlış alan kullanım raporlarına neden olabilir.

Transact-SQL söz dizimi kuralları

Sözdizimi

DBCC UPDATEUSAGE
(   { database_name | database_id | 0 }
    [ , { table_name | table_id | view_name | view_id }
    [ , { index_name | index_id } ] ]
) [ WITH [ NO_INFOMSGS ] [ , ] [ COUNT_ROWS ] ]

Bağımsız değişken

| database_namedatabase_id | 0

Alan kullanımı istatistiklerinin raporlandığı ve düzeltildiği veritabanının adı veya kimliği. 0 belirtilirse geçerli veritabanı kullanılır. Veritabanı adları tanımlayıcılarının kurallarına uymalıdır.

table_name | table_id | view_name | view_id

Alan kullanımı istatistiklerinin raporlandığı ve düzeltildiği tablonun veya dizine alınan görünümün adı veya kimliği. Tablo ve görünüm adları, tanımlayıcıların kurallarına uymalıdır.

index_id | index_name

Kullanılacak dizinin kimliği veya adı. Belirtilmezse, deyimi belirtilen tablo veya görünüm için tüm dizinleri işler.

İLE

Seçeneklerin belirtilmesine izin verir.

NO_INFOMSGS

Tüm bilgilendirme iletilerini gizler.

COUNT_ROWS

Satır sayısı sütununun tablo veya görünümdeki satır sayısının geçerli sayısıyla güncelleştirildiğini belirtir.

Açıklamalar

DBCC UPDATEUSAGE bir tablo veya dizindeki her bölüm için satırları, kullanılan sayfaları, ayrılmış sayfaları, yaprak sayfaları ve veri sayfası sayılarını düzeltir. Sistem tablolarında yanlışlık yoksa DBCC UPDATEUSAGE veri döndürmez. Yanlışlar bulunur ve düzeltilirse ve WITH NO_INFOMSGS kullanılmazsa, DBCC UPDATEUSAGE sistem tablolarında güncelleştirilen satırları ve sütunları döndürür.

DBCC CHECKDB, sayfa veya satır sayısının ne zaman negatif olduğunu algılamak için geliştirilmiştir. Algılandığında, DBCC CHECKDB çıkışı bir uyarı ve sorunu gidermek için DBCC UPDATEUSAGE çalıştırma önerisi içerir.

En iyi yöntemler

Aşağıdakileri öneririz:

  • SQL Server çoğu durumda meta verileri koruduğundan DBCC UPDATEUSAGE düzenli olarak çalıştırmayın. DBCC UPDATEUSAGE, örneğin sp_spaceusedtarafından yanlış değerlerin döndürülmekte olduğundan şüpheleniyorsanız, gerektiği şekilde çalıştırılmalıdır. DBCC UPDATEUSAGE büyük tablolarda veya veritabanlarında çalıştırılması biraz zaman alabilir.
  • DBCC UPDATEUSAGE düzenli olarak (örneğin, haftalık) çalıştırmayı göz önünde bulundurun, ancak veritabanı CREATE, ALTER veya DROP deyimleri gibi sık sık Veri Tanımı Dili (DDL) değişikliklerine tabi tutulsa.

Sonuç kümeleri

DBCC UPDATEUSAGE döndürür (değerler değişebilir):

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

İzinler

sysadmin sabit sunucu rolüne veya db_owner sabit veritabanı rolüne üyelik gerektirir.

Örnekler

A. Geçerli veritabanındaki tüm nesneler için sayfa veya satır sayılarını ya da her ikisini güncelleştirin

Aşağıdaki örnek, veritabanı adı için 0 belirtir ve geçerli veritabanı için güncelleştirilmiş sayfa veya satır sayısı bilgilerini DBCC UPDATEUSAGE raporlar.

DBCC UPDATEUSAGE (0);
GO

B. AdventureWorks için sayfa veya satır sayılarını veya her ikisini de güncelleştirin ve bilgilendiren iletileri gizleyin

Aşağıdaki örnek, veritabanı adı olarak AdventureWorks2025 belirtir ve tüm bilgilendirme iletilerini gizler.

DBCC UPDATEUSAGE (AdventureWorks2022) WITH NO_INFOMSGS;
GO

C. Çalışan tablosu için sayfa veya satır sayılarını veya her ikisini de güncelleştirin

Aşağıdaki örnek, Employee veritabanındaki AdventureWorks2025 tablosu için güncelleştirilmiş sayfa veya satır sayısı bilgilerini raporlar.

DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee');
GO

D. Tablodaki belirli bir dizin için sayfa veya satır sayılarını veya her ikisini de güncelleştirme

Aşağıdaki örnek, dizin adı olarak IX_Employee_ManagerID belirtir.

DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee', IX_Employee_OrganizationLevel_OrganizationNode);
GO

Ayrıca bkz.