sp_spaceused (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Die sp_spaceused
gespeicherte Systemprozedur zeigt eine der folgenden Optionen an:
Die Anzahl von Zeilen, reserviertem Speicherplatz und Speicherplatz, der von einer Tabelle, indizierten Ansicht oder Dienstbrokerwarteschlange in der aktuellen Datenbank verwendet wird
der reservierte und von der gesamten Datenbank verwendete Speicherplatz
Transact-SQL-Syntaxkonventionen
Syntax
sp_spaceused
[ [ @objname = ] N'objname' ]
[ , [ @updateusage = ] 'updateusage' ]
[ , [ @mode = ] 'mode' ]
[ , [ @oneresultset = ] oneresultset ]
[ , [ @include_total_xtp_storage = ] include_total_xtp_storage ]
[ ; ]
Hinweis
Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.
Argumente
Für Azure Synapse Analytics and Analytics Platform System (PDW) sp_spaceused
müssen benannte Parameter (z. B sp_spaceused (@objname= N'Table1');
. ) angegeben werden, anstatt die Ordnungsposition von Parametern zu verwenden.
[ @objname = ] N'objname'
Der qualifizierte oder nicht qualifizierte Name der Tabelle, der indizierten Ansicht oder der Warteschlange, für die Informationen zur Speicherplatznutzung angefordert werden. @objname ist nvarchar(776), mit einem Standardwert von NULL
. 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 ist, werden die Ergebnisse für die gesamte Datenbank zurückgegeben.
Hinweis
Das Azure Synapse Analytics and Analytics Platform System (PDW) unterstützt nur Datenbank- und Tabellenobjekte.
[ @updateusage = ] 'updateusage'
Gibt an, DBCC UPDATEUSAGE
dass informationen zur Speicherplatznutzung aktualisiert werden sollen. @updateusage ist varchar(5) mit einem Standardwert von false
. Wenn @objname nicht angegeben ist, wird die Anweisung für die gesamte Datenbank ausgeführt. Andernfalls wird die Anweisung auf @objname ausgeführt. Werte können true
oder false
sein.
[ @mode = ] 'Mode'
Gibt den Bereich der Ergebnisse an. Bei einer gestreckten Tabelle oder Datenbank können Sie mit dem @mode-Parameter den Remoteteil des Objekts einschließen oder ausschließen. Weitere Informationen finden Sie unter Stretch Database.
Wichtig
Stretch Database ist in SQL Server 2022 (16.x) und der Azure SQL-Datenbank veraltet. Diese Funktion wird in einer zukünftigen Version der Datenbank-Engine entfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.
@mode ist varchar(11) und kann einer dieser Werte sein.
Wert | Beschreibung |
---|---|
ALL (Standardwert) |
Gibt die Speicherstatistiken des Objekts oder der Datenbank zurück, einschließlich des lokalen Teils und des Remoteteils. |
LOCAL_ONLY |
Gibt die Speicherstatistik nur des lokalen Teils des Objekts oder der Datenbank zurück. Wenn das Objekt oder die Datenbank nicht stretchfähig ist, werden die gleichen Statistiken wie bei @mode zurückgegeben ALL . |
REMOTE_ONLY |
Gibt die Speicherstatistik nur des Remoteteils des Objekts oder der Datenbank zurück. Diese Option löst einen Fehler aus, wenn eine der folgenden Bedingungen zutrifft: Die Tabelle ist für Stretch nicht aktiviert. Die Tabelle ist für Stretch aktiviert, aber Sie haben noch nie die Datenmigration aktiviert. In diesem Fall verfügt die Remotetabelle noch nicht über ein Schema. Der Benutzer hat die Remotetabelle manuell gelöscht. Die Bereitstellung des Remotedatenarchivs hat den Status "Erfolg" zurückgegeben, ist aber tatsächlich fehlgeschlagen. |
[ @oneresultset = ] oneresultset
Gibt an, ob ein einzelnes Resultset zurückgegeben werden soll. @oneresultset ist Bit und kann einer der folgenden Werte sein:
Wert | Beschreibung |
---|---|
0 (Standardwert) |
Wenn @objname null ist oder nicht angegeben ist, werden zwei Resultsets zurückgegeben. |
1 |
Wenn @objname nicht angegeben wird NULL , wird ein einzelnes Resultset zurückgegeben. |
[ @include_total_xtp_storage = ] include_total_xtp_storage
Gilt für: SQL Server 2017 (14.x) und höhere Versionen und SQL-Datenbank
Wenn @oneresultset auf 1
festgelegt ist, bestimmt dieser Parameter, ob das einzelne Resultset Spalten für MEMORY_OPTIMIZED_DATA
den Speicher enthält. @include_total_xtp_storage ist bit, mit einem Standardwert von 0
. If 1
, XTP columns are included in the resultset.
Rückgabecodewerte
0
(erfolgreich) oder 1
Fehler.
Resultset
Wenn @objname ausgelassen wird und der Wert von @oneresultset lautet 0
, werden die folgenden Resultsets zurückgegeben, um aktuelle Datenbankgrößeninformationen bereitzustellen.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
database_name |
nvarchar(128) | Der Name der aktuellen Datenbank. |
database_size |
varchar(18) | Die Größe der aktuellen Datenbank in Megabyte. database_size enthält Sowohl Daten als auch Protokolldateien. |
unallocated space |
varchar(18) | Speicherplatz in der Datenbank, der nicht für Datenbankobjekte reserviert ist. |
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 ausgelassen wird und der Wert von @oneresultset ist 1
, wird der folgende einzelne Resultset zurückgegeben, um aktuelle Datenbankgrößeninformationen bereitzustellen.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
database_name |
nvarchar(128) | Der Name der aktuellen Datenbank. |
database_size |
varchar(18) | Die Größe der aktuellen Datenbank in Megabyte. database_size enthält Sowohl Daten als auch Protokolldateien. |
unallocated space |
varchar(18) | Speicherplatz in der Datenbank, der nicht für Datenbankobjekte reserviert ist. |
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 ist, wird das folgende Resultset für das angegebene Objekt 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, verwenden Sie die sys.dm_db_partition_stats - oder sys.dm_db_index_physical_stats dynamische Verwaltungsansichten, um entsprechende Größeninformationen abzurufen. |
rows |
char(20) | Anzahl der Zeilen in der Tabelle. Wenn das angegebene Objekt eine Dienstbrokerwarteschlange ist, gibt diese Spalte die Anzahl der Nachrichten in der Warteschlange an. |
reserved |
varchar(18) | Gesamtmenge des reservierten Speicherplatzes für @objname. |
data |
varchar(18) | Gesamtmenge an Speicherplatz, der von Daten in @objname verwendet wird. |
index_size |
varchar(18) | Gesamtmenge an Speicherplatz, der von Indizes in @objname verwendet wird. |
unused |
varchar(18) | Gesamtmenge des reservierten Speicherplatzes für @objname , aber noch nicht verwendet. |
Dieser Modus ist die Standardeinstellung, wenn keine Parameter angegeben werden. Die folgenden Resultsets werden zurückgegeben, die Informationen zur Größe der Datenträgerdatenbank angeben.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
database_name |
nvarchar(128) | Der Name der aktuellen Datenbank. |
database_size |
varchar(18) | Die Größe der aktuellen Datenbank in Megabyte. database_size enthält Sowohl Daten als auch Protokolldateien. Wenn die Datenbank über eine MEMORY_OPTIMIZED_DATA Dateigruppe verfügt, enthält dieser Wert die Gesamtgröße aller Prüfpunktdateien in der Dateigruppe. |
unallocated space |
varchar(18) | Speicherplatz in der Datenbank, der nicht für Datenbankobjekte reserviert ist. Wenn die Datenbank über eine MEMORY_OPTIMIZED_DATA Dateigruppe verfügt, enthält dieser Wert die Gesamtgröße der Prüfpunktdateien mit dem Status PRECREATED in der Dateigruppe. |
Platz, der von Tabellen in der Datenbank verwendet wird. Dieses Resultset spiegelt keine speicheroptimierten Tabellen wider, da keine Datenträgernutzung pro Tabelle vorhanden ist:
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. |
Das folgende Resultset wird nur zurückgegeben , wenn die Datenbank über eine MEMORY_OPTIMIZED_DATA
Dateigruppe mit mindestens einem Container verfügt:
Spaltenname | Datentyp | Beschreibung |
---|---|---|
xtp_precreated |
varchar(18) | Gesamtgröße der Prüfpunktdateien mit Status PRECREATED in KB. Zählt zum nicht zugewiesenen Bereich in der Datenbank als Ganzes. Wenn beispielsweise 600.000 KB vordefinierte Prüfpunktdateien vorhanden sind, enthält 600000 KB diese Spalte . |
xtp_used |
varchar(18) | Gesamtgröße der Prüfpunktdateien mit Status UNDER CONSTRUCTION , ACTIVE , und MERGE TARGET , in KB. Dieser Wert ist der Speicherplatz, der aktiv für Daten in speicheroptimierten Tabellen verwendet wird. |
xtp_pending_truncation |
varchar(18) | Gesamtgröße der Prüfpunktdateien mit Status WAITING_FOR_LOG_TRUNCATION in KB. Dieser Wert ist der Speicherplatz, der für Prüfpunktdateien verwendet wird, die auf die Bereinigung warten, sobald das Protokoll abgeschnitten wird. |
Wenn @objname nicht angegeben wird, lautet 1
der Wert @oneresultset und @include_total_xtp_storage ist1
, wird das folgende einzelne Resultset zurückgegeben, um aktuelle Datenbankgrößeninformationen bereitzustellen. Wenn @include_total_xtp_storage ist 0
(Standard), werden die letzten drei Spalten weggelassen.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
database_name |
nvarchar(128) | Der Name der aktuellen Datenbank. |
database_size |
varchar(18) | Die Größe der aktuellen Datenbank in Megabyte. database_size enthält Sowohl Daten als auch Protokolldateien. Wenn die Datenbank über eine MEMORY_OPTIMIZED_DATA Dateigruppe verfügt, enthält dieser Wert die Gesamtgröße aller Prüfpunktdateien in der Dateigruppe. |
unallocated space |
varchar(18) | Speicherplatz in der Datenbank, der nicht für Datenbankobjekte reserviert ist. Wenn die Datenbank über eine MEMORY_OPTIMIZED_DATA Dateigruppe verfügt, enthält dieser Wert die Gesamtgröße der Prüfpunktdateien mit dem Status PRECREATED in der Dateigruppe. |
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. |
xtp_precreated 1 |
varchar(18) | Gesamtgröße der Prüfpunktdateien mit Status PRECREATED in KB. Dieser Wert zählt zum nicht zugewiesenen Bereich in der Datenbank als Ganzes. Gibt zurück NULL , wenn die Datenbank nicht über eine MEMORY_OPTIMIZED_DATA Dateigruppe mit mindestens einem Container verfügt. |
xtp_used 1 |
varchar(18) | Gesamtgröße der Prüfpunktdateien mit Status UNDER CONSTRUCTION , ACTIVE , und MERGE TARGET , in KB. Dieser Wert ist der Speicherplatz, der aktiv für Daten in speicheroptimierten Tabellen verwendet wird. Gibt zurück NULL , wenn die Datenbank nicht über eine MEMORY_OPTIMIZED_DATA Dateigruppe mit mindestens einem Container verfügt. |
xtp_pending_truncation 1 |
varchar(18) | Gesamtgröße der Prüfpunktdateien mit Status WAITING_FOR_LOG_TRUNCATION in KB. Dieser Wert ist der Speicherplatz, der für Prüfpunktdateien verwendet wird, die auf die Bereinigung warten, sobald das Protokoll abgeschnitten wird. Gibt zurück NULL , wenn die Datenbank nicht über eine MEMORY_OPTIMIZED_DATA Dateigruppe mit mindestens einem Container verfügt. |
1 Nur enthalten, wenn @include_total_xtp_storage auf 1
.
Hinweise
Der database_size
Wert ist im Allgemeinen größer als die Summe, da reserved
unallocated space
+ er die Größe von Protokolldateien enthält, aber unallocated_space
reserved
nur Datenseiten in Betracht ziehen kann. In einigen Fällen mit Azure Synapse Analytics ist diese Aussage möglicherweise nicht wahr.
Seiten, die von XML-Indizes und Volltextindizes verwendet werden, sind für beide Resultsets enthalten index_size
. Wenn @objname angegeben wird, werden die Seiten für die XML-Indizes und Volltextindizes für das Objekt ebenfalls in der Summe reserved
und index_size
den Ergebnissen gezählt.
Wenn die Raumnutzung für eine Datenbank oder ein Objekt, das ein räumlicher Index ist, berechnet wird, enthalten die Spalten der Raumgröße, z database_size
. B. , reserved
und index_size
die Größe des räumlichen Indexes.
Wenn @updateusage angegeben wird, überprüft die SQL Server-Datenbank-Engine die Datenseiten in der Datenbank und nimmt alle erforderlichen Korrekturen an den sys.allocation_units
Ansichten und sys.partitions
Katalogen hinsichtlich des von jeder Tabelle verwendeten Speicherplatzes vor. Es gibt einige Situationen, z. B. nach dem Ablegen eines Indexes, wenn die Leerzeicheninformationen für die Tabelle möglicherweise nicht aktuell sind. @updateusage können einige Zeit in großen Tabellen oder Datenbanken ausführen. Verwenden Sie @updateusage nur, wenn Sie vermuten, dass falsche Werte zurückgegeben werden, und wenn der Prozess keine negativen Auswirkungen auf andere Benutzer oder Prozesse in der Datenbank hat. Falls bevorzugt, DBCC UPDATEUSAGE
kann 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 die Datenbank-Engine die Aufhebung der aktuellen Seitenzuordnungen sowie die zugehörigen Sperren, bis für die Transaktion ein Commit ausgeführt wurde. Verzögerte Ablagevorgänge lassen nicht sofort zugewiesenen Speicherplatz frei. Daher entsprechen die Werte, die unmittelbar nach dem Ablegen oder Abschneiden eines großen Objekts zurückgegeben sp_spaceused
werden, möglicherweise nicht den tatsächlich verfügbaren Speicherplatz.
Berechtigungen
Die Berechtigung zum Ausführen sp_spaceused
wird der öffentlichen Rolle gewährt. Nur Mitglieder der festen Datenbankrolle db_owner können den Parameter @updateusage angeben.
Beispiele
A. Anzeigen von Speicherplatzinformationen zu einer Tabelle
Im folgenden Beispiel werden Speicherplatzinformationen für die Vendor
-Tabelle und deren Indizes abgerufen.
USE AdventureWorks2022;
GO
EXEC sp_spaceused N'Purchasing.Vendor';
GO
B. Anzeigen aktualisierter Speicherplatzinformationen zu einer Datenbank
Im folgenden Beispiel wird der in der aktuellen Datenbank verwendete Platz zusammengefasst und der optionale Parameter @updateusage verwendet, um sicherzustellen, dass aktuelle Werte zurückgegeben werden.
USE AdventureWorks2022;
GO
EXEC sp_spaceused @updateusage = N'TRUE';
GO
C. Anzeigen von Platznutzungsinformationen zur Remotetabelle, die einer Stretch-aktivierten Tabelle zugeordnet ist
Im folgenden Beispiel wird der von der Remotetabelle verwendete Platz zusammengefasst, der einer Stretch-fähigen Tabelle zugeordnet ist, indem das argument @mode verwendet wird, um das Remoteziel anzugeben. Weitere Informationen finden Sie unter Stretch Database.
USE StretchedAdventureWorks2022;
GO
EXEC sp_spaceused N'Purchasing.Vendor', @mode = 'REMOTE_ONLY';
D: Anzeigen von Platznutzungsinformationen für eine Datenbank in einem einzelnen Resultset
Im folgenden Beispiel wird die Speicherplatznutzung für die aktuelle Datenbank in einem einzigen Resultset zusammengefasst.
USE AdventureWorks2022;
GO
EXEC sp_spaceused @oneresultset = 1;
E. Anzeigen von Speicherplatznutzungsinformationen für eine Datenbank mit mindestens einer MEMORY_OPTIMIZED Dateigruppe in einem einzigen Resultset
Im folgenden Beispiel wird die Speicherplatznutzung für die aktuelle Datenbank mit mindestens einer MEMORY_OPTIMIZED
Dateigruppe in einem einzigen Resultset zusammengefasst.
USE WideWorldImporters
GO
EXEC sp_spaceused @updateusage = 'FALSE',
@mode = 'ALL',
@oneresultset = '1',
@include_total_xtp_storage = '1';
GO
F. Anzeigen von Platznutzungsinformationen für ein MEMORY_OPTIMIZED Tabellenobjekt in einer Datenbank
Im folgenden Beispiel wird die Speicherplatznutzung für ein MEMORY_OPTIMIZED
Tabellenobjekt in der aktuellen Datenbank mit mindestens einer MEMORY_OPTIMIZED
Dateigruppe zusammengefasst.
USE WideWorldImporters
GO
EXEC sp_spaceused @objname = N'VehicleTemparatures',
@updateusage = 'FALSE',
@mode = 'ALL',
@oneresultset = '0',
@include_total_xtp_storage = '1';
GO
Zugehöriger Inhalt
- CREATE INDEX (Transact-SQL)
- CREATE TABLE (Transact-SQL)
- DBCC UPDATEUSAGE (Transact-SQL)
- Service Broker
- 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)