Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel
Gilt für:SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
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.
Transact-SQL-Syntaxkonventionen
DBCC UPDATEUSAGE
( { database_name | database_id | 0 }
[ , { table_name | table_id | view_name | view_id }
[ , { index_name | index_id } ] ]
) [ WITH [ NO_INFOMSGS ] [ , ] [ COUNT_ROWS ] ]
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.
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.
ID oder Name des zu verwendenden Indexes. Falls nicht angegeben, werden von der Anweisung alle Indizes der angegebenen Tabelle oder Sicht verarbeitet.
Ermöglicht die Angabe von Optionen.
Alle Informationsmeldungen werden unterdrückt.
Gibt an, dass die row count-Spalte mit der aktuellen Anzahl von Tabellen- oder Sichtzeilen aktualisiert wird.
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. Wurden Ungenauigkeiten gefunden und korrigiert und wurde WITH NO_INFOMSGS nicht verwendet, 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.
Es wird Folgendes empfohlen:
- Führen Sie
DBCC UPDATEUSAGE
nicht routinemäßig aus, da SQL Server die Metadaten in den meisten Fällen beibehält.DBCC UPDATEUSAGE
sollte nur bei Bedarf ausgeführt werden, z. B. wenn Sie vermuten, dasssp_spaceused
falsche Werte zurückgibt.DBCC UPDATEUSAGE
kann bei großen Tabellen oder Datenbanken einige Zeit dauern. - 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.
DBCC UPDATEUSAGE
gibt Folgendes zurück (die tatsächlichen Werte können davon abweichen):
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Erfordert die Mitgliedschaft in der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner .
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 AdventureWorks2022
als Datenbankname angegeben, und es werden alle Informationsmeldungen unterdrückt.
DBCC UPDATEUSAGE (AdventureWorks2022) WITH NO_INFOMSGS;
GO
Im folgenden Beispiel werden aktualisierte Informationen zur Seiten- oder Zeilenzahl für die Employee
-Tabelle in der AdventureWorks2022
-Datenbank gemeldet.
DBCC UPDATEUSAGE (AdventureWorks2022, '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.
DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee', IX_Employee_OrganizationLevel_OrganizationNode);
GO