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. In SQL Server 2005 werden diese Werte immer richtig verwaltet. In SQL Server 2005 erstellte Datenbanken sollten keine falschen Zählwerte für Seiten und Zeilen enthalten; bei zu SQL Server 2005 aktualisierten Datenbanken kann dies jedoch der Fall sein. Es wird empfohlen, nach dem Aktualisieren auf SQL Server 2005 DBCC UPDATEUSAGE auszuführen, um eventuell vorhandene ungültige Zählwerte zu korrigieren.
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. Wenn 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.
Resultsets
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.
Hinweise
DBCC UPDATEUSAGE korrigiert die Anzahl der Zeilen, verwendeten Seiten, reservierten Seiten, Blattseiten und Datenseiten jeder Partition in Tabellen und Indizes. Wenn keine Ungenauigkeiten in den Systemtabellen festgestellt wurden, werden von DBCC UPDATEUSAGE keine Daten zurückgegeben. Wenn Ungenauigkeiten festgestellt und korrigiert wurden und WITH NO_INFOMSGS nicht verwendet wurde, gibt DBCC UPDATEUSAGE die Zeilen und Spalten zurück, die in den Systemtabellen aktualisiert wurden.
Verwenden Sie DBCC UPDATEUSAGE, um die Zähler für die Speicherverwendung zu synchronisieren. Da DBCC UPDATEUSAGE beim Ausführen für große Tabellen oder Datenbanken einige Zeit in Anspruch nehmen kann, sollte es nur dann verwendet werden, wenn Sie vermuten, dass von sp_spaceused falsche Werte zurückgegeben werden. Mit einem optionalen Parameter kann sp_spaceused DBCC UPDATEUSAGE auszuführen, bevor Informationen zu der Tabelle oder dem Index zurückgegeben werden.
Aktualisieren von Datenbanken
In früheren Versionen von SQL Server ist es möglich, dass die tabellen- und indexbasierten Zeilen- und Seitenzähler falsche Werte annehmen. Datenbanken, die in Versionen vor SQL Server 2005 erstellt wurden, können falsche Zählwerte enthalten. Daher wird empfohlen, nach dem Aktualisieren auf SQL Server 2005 DBCC UPDATEUSAGE auszuführen, um eventuell vorhandene ungültige Zählwerte zu korrigieren.
In SQL Server 2005 wurde DBCC CHECKDB verbessert, sodass nun festgestellt wird, wenn die Werte der 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 beheben. Auch wenn es den Anschein hat, als hätte die Aktualisierung der Datenbank auf SQL Server 2005 dieses Problem verursacht, bestand es tatsächlich schon vor dem Aktualisierungsvorgang.
Berechtigungen
Erfordert die Mitgliedschaft in der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner.
Beispiele
A. Aktualisieren von Seiten- und/oder Zeilenzahlen 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- und/oder Zeilenzahlen 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- und/oder Zeilenzahlen 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- und/oder Zeilenzahlen 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
Siehe auch
Verweis
DBCC (Transact-SQL)
sp_spaceused (Transact-SQL)
sys.sysindexes (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)
Andere Ressourcen
Tabellen- und Indexarchitektur
Vorgehensweise: Aktualisieren einer Datenbank durch Trennen und Anfügen (Transact-SQL)