sp_spaceused (Transact-SQL)
Gibt die Anzahl der Zeilen sowie den zugeordneten und verwendeten Speicherplatz für eine bestimmte Tabelle, eine indizierte Sicht oder eine SQL Server 2005 Service Broker-Warteschlange in der aktuellen Datenbank bzw. den zugeordneten und verwendeten Speicherplatz für die gesamte Datenbank an.
Transact-SQL-Syntaxkonventionen
Syntax
sp_spaceused [[ @objname = ] 'objname' ]
[,[ @updateusage = ] 'updateusage' ]
Argumente
[ @objname=] 'objname'
Der qualifizierte oder nicht qualifizierte Name der Tabelle, indizierten Sicht oder Warteschlange, für die Informationen zur Speicherverwendung angefordert werden. Anführungszeichen sind nur erforderlich, wenn ein qualifizierter Objektname angegeben wird. Bei Angabe eines vollqualifizierten Objektnamens (einschließlich eines Datenbanknamens) muss der Datenbankname der Name der aktuellen Datenbank sein.
Wenn objname nicht angegeben wird, beziehen sich die zurückgegebenen Werte auf die gesamte Datenbank.
objname hat den Datentyp nvarchar(776) und den Standardwert NULL.
[ @updateusage=] 'updateusage'
Gibt an, dass DBCC UPDATEUSAGE ausgeführt werden soll, um die Informationen zur Speicherplatzverwendung zu aktualisieren. Wenn objname nicht angegeben wird, wird die Anweisung für die gesamte Datenbank ausgeführt; andernfalls wird die Anweisung für objname ausgeführt. Mögliche Werte sind true oder false. updateusage hat den Datentyp varchar(5); der Standardwert ist false.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Resultsets
Wenn objname nicht angegeben wird, werden die folgenden Resultsets zurückgegeben, um aktuelle Informationen zur Datenbankgröße bereitzustellen.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
database_name |
nvarchar(128) |
Der Name der aktuellen Datenbank. |
database_size |
varchar(18) |
Größe der aktuellen Datenbank in Megabyte (MB). database_size enthält sowohl Daten- als auch Protokolldateien. |
unallocated space |
varchar(18) |
Speicherplatz in der Datenbank, der nicht für Datenbankobjekte zugeordnet wurde. |
Spaltenname | Datentyp | Beschreibung |
---|---|---|
reserved |
varchar(18) |
Gesamter von Objekten in der Datenbank zugeordneter Speicherplatz. |
data |
varchar(18) |
Gesamter für Daten verwendeter Speicherplatz. |
index_size |
varchar(18) |
Gesamter für Indizes verwendeter Speicherplatz. |
unused |
varchar(18) |
Gesamter für Objekte in der Datenbank zugeordneter, aber noch nicht verwendeter Speicherplatz. |
Wenn objname angegeben wird, wird für das betreffende Objekt das folgende Resultset zurückgegeben.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
name |
nvarchar(128) |
Name des Objekts, für das Informationen zur Speicherverwendung angefordert wurden. Der Schemaname des Objekts wird nicht zurückgegeben. Wenn der Schemaname erforderlich ist, können Sie mit den dynamischen Verwaltungssichten sys.dm_db_partition_stats oder sys.dm_db_index_physical_stats entsprechende Größeninformationen abrufen. |
rows |
char(11) |
Anzahl der Zeilen in der Tabelle. Wenn es sich bei dem angegebenen Objekt um eine Service Broker-Warteschlange handelt, wird in dieser Spalte die Anzahl der in der Warteschlange vorhandenen Nachrichten angegeben. |
reserved |
varchar(18) |
Gesamter zugeordneter Speicherplatz für objname. |
data |
varchar(18) |
Gesamter für Daten in objname verwendeter Speicherplatz. |
index_size |
varchar(18) |
Gesamter für Indizes in objname verwendeter Speicherplatz. |
unused |
varchar(18) |
Gesamter für objname zugeordneter, aber noch nicht verwendeter Speicherplatz. |
Hinweise
database_size ist immer größer als die Summe aus reserved + unallocated space, da in diesem Wert die Größe von Protokolldateien berücksichtigt wird, während in reserved und unallocated_space nur Datenseiten berücksichtigt werden.
index_size enthält in beiden Resultsets die von XML-Indizes und Volltextindizes verwendeten Seiten. Wenn objname angegeben wird, werden die Seiten für die XML-Indizes und Volltextindizes für das Objekt auch in den Gesamtergebnissen für reserved und index_size mitgezählt.
Wenn updateusage angegeben wird, scannt SQL Server 2005-Datenbankmodul die Datenseiten in der Datenbank und nimmt an den Katalogsichten sys.allocation_units und sys.partitions alle erforderlichen Korrekturen bezüglich des von den Tabellen verwendeten Speicherplatzes vor. In einigen Situationen, z. B. nachdem ein Index gelöscht wurde, entsprechen die Speicherplatzinformationen für die Tabelle möglicherweise nicht dem aktuellen Stand. Die Ausführung von updateusage kann bei großen Tabellen oder Datenbanken einige Zeit in Anspruch nehmen. Verwenden Sie updateusage nur, wenn Sie vermuten, dass falsche Werte zurückgegeben werden und wenn der Vorgang keine negativen Auswirkungen auf andere Benutzer oder Prozesse in der Datenbank haben kann. DBCC UPDATEUSAGE kann auch separat ausgeführt werden.
Hinweis: |
---|
Wenn Sie große Indizes löschen oder neu erstellen bzw. wenn Sie große Tabellen löschen oder abschneiden, verzögert Datenbankmodul die Aufhebung der aktuellen Seitenzuordnungen sowie die zugehörigen Sperren, bis für die Transaktion ein Commit ausgeführt wird. Bei verzögerten Löschvorgängen wird der zugeordnete Speicherplatz nicht sofort freigegeben. Daher spiegeln die von sp_spaceused unmittelbar nach dem Löschen oder Abschneiden eines großen Objekts zurückgegebenen Werte nicht unbedingt den tatsächlich verfügbaren Speicherplatz wider. Weitere Informationen zu zurückgestellten Zuweisungen finden Sie unter Löschen und Neuerstellen großer Objekte. |
Berechtigungen
Die Berechtigung zum Ausführen von sp_spaceused wird der public-Rolle erteilt. Nur Mitglieder der festen Datenbankrolle db_owner können den Parameter @updateusage angeben.
Beispiele
A. Anzeigen von Speicherplatzinformationen für eine Tabelle
Im folgenden Beispiel werden Speicherplatzinformationen für die Vendor
-Tabelle und deren Indizes abgerufen.
USE AdventureWorks;
GO
EXEC sp_spaceused N'Purchasing.Vendor';
GO
B. Anzeigen aktualisierter Speicherplatzinformationen für eine Datenbank
Das folgende Beispiel ermöglicht eine Zusammenfassung des in der aktuellen Datenbank verwendeten Speicherplatzes. Durch Verwendung des optionalen Parameters @updateusage wird sichergestellt, dass aktuelle Werte zurückgegeben werden.
USE AdventureWorks;
GO
EXEC sp_spaceused @updateusage = N'TRUE';
GO
Siehe auch
Verweis
CREATE INDEX (Transact-SQL)
CREATE TABLE (Transact-SQL)
DBCC UPDATEUSAGE (Transact-SQL)
sys.allocation_units (Transact-SQL)
sys.indexes (Transact-SQL)
sys.index_columns (Transact-SQL)
sys.objects (Transact-SQL)
sys.partitions (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)