DBCC UPDATEUSAGE (Transact-SQL)

Meldet und behebt Ungenauigkeiten bei den Seiten- und Zeilenzahlen in den Katalogsichten. Diese Ungenauigkeiten können falsche Berichte über die Speicherplatzverwendung verursachen, die von der gespeicherten Systemprozedur sp_spaceused zurückgegeben werden.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • database_name | database_id | 0
    Name oder ID der Datenbank, deren Statistiken zur Speicherverwendung mitgeteilt und korrigiert werden sollen. Wird 0 angegeben, wird die aktuelle Datenbank verwendet. Datenbanknamen müssen den Regeln für Bezeichner entsprechen.

  • table_name | table_id | view_name | view_id
    Name oder ID der Tabelle oder indizierten Sicht, deren Statistiken zur Speicherverwendung mitgeteilt und korrigiert werden sollen. Tabellen- und Sichtnamen müssen den Regeln für Bezeichner entsprechen.

  • index_id | index_name
    ID oder Name des zu verwendenden Indexes. Falls nicht angegeben, werden von der Anweisung alle Indizes der angegebenen Tabelle oder Sicht verarbeitet.

  • WITH
    Ermöglicht die Angabe von Optionen.

  • NO_INFOMSGS
    Alle Informationsmeldungen werden unterdrückt.

  • COUNT_ROWS
    Gibt an, dass die row count-Spalte mit der aktuellen Anzahl von Tabellen- oder Sichtzeilen aktualisiert wird.

Hinweise

DBCC UPDATEUSAGE korrigiert die Anzahl der Zeilen, verwendeten Seiten, reservierten Seiten, Blattseiten und Datenseiten jeder Partition in Tabellen und Indizes. Wurden keine Ungenauigkeiten in den Systemtabellen festgestellt, werden von DBCC UPDATEUSAGE keine Daten zurückgegeben. Wenn Ungenauigkeiten gefunden und korrigiert und WITH NO_INFOMSGS nicht verwendet wurde, gibt DBCC UPDATEUSAGE die Zeilen und Spalten zurück, die in den Systemtabellen aktualisiert wurden.

DBCC CHECKDB wurde verbessert, sodass nun erkannt wird, wenn Seiten- oder Zeilenzähler negativ werden. Wenn dies festgestellt wird, enthält die Ausgabe von DBCC CHECKDB eine Warnung und die Empfehlung, DBCC UPDATEUSAGE auszuführen, um das Problem zu beseitigen.

Bewährte Methoden

  • Führen Sie DBCC UPDATEUSAGE immer aus, nachdem eine Datenbank von SQL Server 2000 aktualisiert wurde. Die Seiten- und Zeilenanzahl wird korrigiert und anschließend beibehalten.

  • Führen Sie DBCC UPDATEUSAGE nicht routinemäßig für Datenbanken aus, die in SQL Server 2005 oder höher erstellt wurden, oder für aktualisierte Datenbanken, die bereits mit DBCC UPDATEUSAGE korrigiert wurden. Da das Ausführen von DBCC UPDATEUSAGE für große Tabellen oder Datenbanken einige Zeit in Anspruch nehmen kann, sollte es nur dann verwendet werden, wenn Sie vermuten, dass falsche Werte von sp_spaceused zurückgegeben werden.

  • Führen Sie DBCC UPDATEUSAGE nur dann routinemäßig (z. B. wöchentlich) aus, wenn die Datenbank häufig mithilfe der Datendefinitionssprache (Data Definition Language, DDL) z. B. durch die Anweisungen CREATE, ALTER oder DROP geändert wird.

Resultsets

DBCC UPDATEUSAGE gibt Folgendes zurück (die tatsächlichen Werte können davon abweichen):

Die DBCC-Ausführung wurde abgeschlossen. Falls DBCC Fehlermeldungen ausgegeben hat, wenden Sie sich an den Systemadministrator.

Berechtigungen

Erfordert die Mitgliedschaft in der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner.

Beispiele

A. Aktualisieren von Seiten- oder Zeilenzahlen oder beidem für alle Objekte in der aktuellen Datenbank

Im folgenden Beispiel wird 0 für den Datenbanknamen angegeben, und DBCC UPDATEUSAGE meldet aktualisierte Informationen zur Seiten- oder Zeilenzahl für die aktuelle Datenbank.

DBCC UPDATEUSAGE (0);
GO

B. Aktualisieren von Seiten- oder Zeilenzahlen oder beidem für AdventureWorks und Unterdrücken von Informationsmeldungen

Im folgenden Beispiel wird AdventureWorks als Datenbankname angegeben, und es werden alle Informationsmeldungen unterdrückt.

USE AdventureWorks;
GO
DBCC UPDATEUSAGE (AdventureWorks) WITH NO_INFOMSGS; 
GO

C. Aktualisieren von Seiten- oder Zeilenzahlen oder beidem für die Employee-Tabelle

Im folgenden Beispiel werden aktualisierte Informationen zur Seiten- oder Zeilenzahl für die Employee -Tabelle in der AdventureWorks -Datenbank gemeldet.

USE AdventureWorks;
GO
DBCC UPDATEUSAGE (AdventureWorks,"HumanResources.Employee");
GO

D. Aktualisieren von Seiten- oder Zeilenzahlen oder beidem für einen bestimmten Index in einer Tabelle

Im folgenden Beispiel wird IX_Employee_ManagerID als Indexname angegeben.

USE AdventureWorks;
GO
DBCC UPDATEUSAGE (AdventureWorks, "HumanResources.Employee", IX_Employee_ManagerID);
GO

Änderungsverlauf

Aktualisierter Inhalt

Der Abschnitt "Bewährte Methoden" wurde zu "Hinweise" hinzugefügt.