Delen via


sp_spaceused (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

In de sp_spaceused opgeslagen systeemprocedure wordt een van de volgende opties weergegeven:

  • het aantal rijen, gereserveerde schijfruimte en schijfruimte dat wordt gebruikt door een tabel, geïndexeerde weergave of Service Broker-wachtrij in de huidige database

  • de schijfruimte gereserveerd en gebruikt door de hele database

Transact-SQL syntaxis-conventies

Syntaxis

sp_spaceused
    [ [ @objname = ] N'objname' ]
    [ , [ @updateusage = ] 'updateusage' ]
    [ , [ @mode = ] 'mode' ]
    [ , [ @oneresultset = ] oneresultset ]
    [ , [ @include_total_xtp_storage = ] include_total_xtp_storage ]
[ ; ]

Opmerking

Deze syntaxis wordt niet ondersteund door een serverloze SQL-pool in Azure Synapse Analytics.

Argumenten

Voor Azure Synapse Analytics en Analytics Platform System (PDW) sp_spaceused moet u benoemde parameters opgeven (bijvoorbeeld sp_spaceused (@objname= N'Table1');), in plaats van te vertrouwen op de rangschikking van parameters.

[ @objname = ] N'objname'

De gekwalificeerde of niet-gekwalificeerde naam van de tabel, geïndexeerde weergave of wachtrij waarvoor informatie over ruimtegebruik wordt aangevraagd. @objname is nvarchar(776), met een standaardwaarde van NULL. Aanhalingstekens zijn alleen vereist als een gekwalificeerde objectnaam is opgegeven. Als er een volledig gekwalificeerde objectnaam (inclusief een databasenaam) wordt opgegeven, moet de databasenaam de naam van de huidige database zijn.

Als @objname niet is opgegeven, worden de resultaten geretourneerd voor de hele database.

Opmerking

Azure Synapse Analytics and Analytics Platform System (PDW) ondersteunt alleen database- en tabelobjecten.

[ @updateusage = ] 'updateusage'

Geeft aan DBCC UPDATEUSAGE dat moet worden uitgevoerd om informatie over ruimtegebruik bij te werken. @updateusage is varchar(5), met een standaardwaarde van false. Wanneer @objname niet is opgegeven, wordt de instructie uitgevoerd op de hele database. Anders wordt de instructie uitgevoerd op @objname. Waarden kunnen true of falsezijn.

[ @mode = ] 'mode'

Geeft het bereik van de resultaten aan. Voor een stretched tabel of database kunt u met de parameter @mode het externe gedeelte van het object opnemen of uitsluiten. Zie Stretch Databasevoor meer informatie.

Belangrijk

Stretch Database is verouderd verklaard in SQL Server 2022 (16.x) en Azure SQL Database. Deze functie wordt verwijderd in een toekomstige versie van de database-engine. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie.

@mode is varchar(11), en kan een van deze waarden zijn.

Waarde Beschrijving
ALL (standaard) Retourneert de opslagstatistieken van het object of de database, inclusief zowel het lokale gedeelte als het externe gedeelte.
LOCAL_ONLY Retourneert de opslagstatistieken van alleen het lokale gedeelte van het object of de database. Als het object of de database niet stretch-ingeschakeld is, worden dezelfde statistieken geretourneerd als wanneer @mode is ALL.
REMOTE_ONLY Retourneert de opslagstatistieken van alleen het externe gedeelte van het object of de database. Met deze optie wordt een fout gegenereerd wanneer aan een van de volgende voorwaarden wordt voldaan:

De tabel is niet ingeschakeld voor Stretch.

De tabel is ingeschakeld voor Stretch, maar u hebt nooit gegevensmigratie ingeschakeld. In dit geval heeft de externe tabel nog geen schema.

De gebruiker heeft de externe tabel handmatig verwijderd.

Het inrichten van het externe gegevensarchief heeft de status Geslaagd geretourneerd, maar is in feite mislukt.

[ @oneresultset = ] oneresultset

Hiermee wordt aangegeven of één resultatenset moet worden geretourneerd. @oneresultset is bit en kan een van deze waarden zijn:

Waarde Beschrijving
0 (standaard) Wanneer @objname null is of niet is opgegeven, worden er twee resultatensets geretourneerd.
1 Wanneer @objname is NULL of niet is opgegeven, wordt één resultatenset geretourneerd.

[ @include_total_xtp_storage = ] include_total_xtp_storage

Van toepassing op: SQL Server 2017 (14.x) en latere versies en SQL Database

Wanneer @oneresultset is ingesteld 1op, bepaalt deze parameter of de enkelvoudige resultatenset kolommen voor MEMORY_OPTIMIZED_DATA opslag bevat. @include_total_xtp_storage is bit, met een standaardwaarde van 0. Als 1, XTP kolommen worden opgenomen in de resultatenset.

Codewaarden retourneren

0 (geslaagd) of 1 (mislukt).

Resultaatset

Als @objname wordt weggelaten en de waarde van @oneresultset is 0, worden de volgende resultatensets geretourneerd om informatie over de huidige databasegrootte op te geven.

Kolomnaam Gegevenstype Beschrijving
database_name nvarchar(128) Naam van de huidige database.
database_size varchar(18) Grootte van de huidige database in megabytes. database_size bevat zowel gegevens- als logboekbestanden.
unallocated space varchar(18) Ruimte in de database die niet is gereserveerd voor databaseobjecten.
Kolomnaam Gegevenstype Beschrijving
reserved varchar(18) Totale hoeveelheid ruimte toegewezen door objecten in de database.
data varchar(18) Totale hoeveelheid ruimte die door gegevens wordt gebruikt.
index_size varchar(18) Totale hoeveelheid ruimte die door indexen wordt gebruikt.
unused varchar(18) Totale hoeveelheid ruimte gereserveerd voor objecten in de database, maar nog niet gebruikt.

Als @objname wordt weggelaten en de waarde van @oneresultset is 1, wordt de volgende resultatenset geretourneerd om informatie over de huidige databasegrootte op te geven.

Kolomnaam Gegevenstype Beschrijving
database_name nvarchar(128) Naam van de huidige database.
database_size varchar(18) Grootte van de huidige database in megabytes. database_size bevat zowel gegevens- als logboekbestanden.
unallocated space varchar(18) Ruimte in de database die niet is gereserveerd voor databaseobjecten.
reserved varchar(18) Totale hoeveelheid ruimte toegewezen door objecten in de database.
data varchar(18) Totale hoeveelheid ruimte die door gegevens wordt gebruikt.
index_size varchar(18) Totale hoeveelheid ruimte die door indexen wordt gebruikt.
unused varchar(18) Totale hoeveelheid ruimte gereserveerd voor objecten in de database, maar nog niet gebruikt.

Als @objname is opgegeven, wordt de volgende resultatenset geretourneerd voor het opgegeven object.

Kolomnaam Gegevenstype Beschrijving
name nvarchar(128) Naam van het object waarvoor informatie over ruimtegebruik is aangevraagd.

De schemanaam van het object wordt niet geretourneerd. Als de schemanaam is vereist, gebruikt u de sys.dm_db_partition_stats of sys.dm_db_index_physical_stats dynamische beheerweergaven om vergelijkbare groottegegevens te verkrijgen.
rows char(20) Het aantal rijen dat in de tabel bestaat. Als het opgegeven object een Service Broker-wachtrij is, geeft deze kolom het aantal berichten in de wachtrij aan.
reserved varchar(18) Totale hoeveelheid gereserveerde ruimte voor @objname.
data varchar(18) Totale hoeveelheid ruimte die wordt gebruikt door gegevens in @objname.
index_size varchar(18) Totale hoeveelheid ruimte die wordt gebruikt door indexen in @objname.
unused varchar(18) Totale hoeveelheid ruimte gereserveerd voor @objname maar nog niet gebruikt.

Deze modus is de standaardmodus wanneer er geen parameters zijn opgegeven. De volgende resultatensets worden geretourneerd met informatie over de grootte van de database op schijf.

Kolomnaam Gegevenstype Beschrijving
database_name nvarchar(128) Naam van de huidige database.
database_size varchar(18) Grootte van de huidige database in megabytes. database_size bevat zowel gegevens- als logboekbestanden. Als de database een MEMORY_OPTIMIZED_DATA bestandsgroep heeft, bevat deze waarde de totale grootte op de schijf van alle controlepuntbestanden in de bestandsgroep.
unallocated space varchar(18) Ruimte in de database die niet is gereserveerd voor databaseobjecten. Als de database een MEMORY_OPTIMIZED_DATA bestandsgroep heeft, bevat deze waarde de totale grootte op de schijf van de controlepuntbestanden met de status PRECREATED in de bestandsgroep.

Ruimte die wordt gebruikt door tabellen in de database. Deze resultatenset weerspiegelt geen tabellen die zijn geoptimaliseerd voor geheugen, omdat er geen boekhouding per tabel is van schijfgebruik:

Kolomnaam Gegevenstype Beschrijving
reserved varchar(18) Totale hoeveelheid ruimte toegewezen door objecten in de database.
data varchar(18) Totale hoeveelheid ruimte die door gegevens wordt gebruikt.
index_size varchar(18) Totale hoeveelheid ruimte die door indexen wordt gebruikt.
unused varchar(18) Totale hoeveelheid ruimte gereserveerd voor objecten in de database, maar nog niet gebruikt.

De volgende resultatenset wordt alleen geretourneerd als de database een MEMORY_OPTIMIZED_DATA bestandsgroep met ten minste één container heeft:

Kolomnaam Gegevenstype Beschrijving
xtp_precreated varchar(18) Totale grootte van controlepuntbestanden met status PRECREATED, in KB. Telt mee naar de niet-toegewezen ruimte in de database als geheel. Als er bijvoorbeeld 600.000 kB aan vooraf gemaakte controlepuntbestanden is, bevat 600000 KBdeze kolom .
xtp_used varchar(18) Totale grootte van controlepuntbestanden met statussen UNDER CONSTRUCTION, ACTIVEen MERGE TARGET, in KB. Deze waarde is de schijfruimte die actief wordt gebruikt voor gegevens in tabellen die zijn geoptimaliseerd voor geheugen.
xtp_pending_truncation varchar(18) Totale grootte van controlepuntbestanden met status WAITING_FOR_LOG_TRUNCATION, in KB. Deze waarde is de schijfruimte die wordt gebruikt voor controlepuntbestanden die wachten op opschoning, zodra het afkappen van logboeken plaatsvindt.

Als @objname wordt weggelaten, wordt 1de waarde van @oneresultset en @include_total_xtp_storage is1, de volgende set met één resultaat geretourneerd om informatie over de huidige databasegrootte op te geven. Als @include_total_xtp_storage is 0 (de standaardinstelling), worden de laatste drie kolommen weggelaten.

Kolomnaam Gegevenstype Beschrijving
database_name nvarchar(128) Naam van de huidige database.
database_size varchar(18) Grootte van de huidige database in megabytes. database_size bevat zowel gegevens- als logboekbestanden. Als de database een MEMORY_OPTIMIZED_DATA bestandsgroep heeft, bevat deze waarde de totale grootte op de schijf van alle controlepuntbestanden in de bestandsgroep.
unallocated space varchar(18) Ruimte in de database die niet is gereserveerd voor databaseobjecten. Als de database een MEMORY_OPTIMIZED_DATA bestandsgroep heeft, bevat deze waarde de totale grootte op de schijf van de controlepuntbestanden met de status PRECREATED in de bestandsgroep.
reserved varchar(18) Totale hoeveelheid ruimte toegewezen door objecten in de database.
data varchar(18) Totale hoeveelheid ruimte die door gegevens wordt gebruikt.
index_size varchar(18) Totale hoeveelheid ruimte die door indexen wordt gebruikt.
unused varchar(18) Totale hoeveelheid ruimte gereserveerd voor objecten in de database, maar nog niet gebruikt.
xtp_precreated 1 varchar(18) Totale grootte van controlepuntbestanden met status PRECREATED, in KB. Deze waarde telt als geheel mee naar de niet-toegewezen ruimte in de database. Retourneert NULL als de database geen bestandsgroep met ten minste één container heeft MEMORY_OPTIMIZED_DATA .
xtp_used 1 varchar(18) Totale grootte van controlepuntbestanden met statussen UNDER CONSTRUCTION, ACTIVEen MERGE TARGET, in KB. Deze waarde is de schijfruimte die actief wordt gebruikt voor gegevens in tabellen die zijn geoptimaliseerd voor geheugen. Retourneert NULL als de database geen bestandsgroep met ten minste één container heeft MEMORY_OPTIMIZED_DATA .
xtp_pending_truncation 1 varchar(18) Totale grootte van controlepuntbestanden met status WAITING_FOR_LOG_TRUNCATION, in KB. Deze waarde is de schijfruimte die wordt gebruikt voor controlepuntbestanden die wachten op opschoning, zodra het afkappen van logboeken plaatsvindt. Retourneert NULL als de database geen bestandsgroep met ten minste één container heeft MEMORY_OPTIMIZED_DATA .

1 Alleen opgenomen als @include_total_xtp_storage is ingesteld op 1.

Opmerkingen

De database_size waarde is over het algemeen groter dan de som, reservedunallocated space + omdat deze de grootte van logboekbestanden bevat, maar reserved alleen unallocated_space gegevenspagina's overwegen. In sommige gevallen met Azure Synapse Analytics is deze instructie mogelijk niet waar.

Pagina's die door XML-indexen en volledige-tekstindexen worden gebruikt, worden opgenomen in index_size beide resultatensets. Wanneer @objname is opgegeven, worden de pagina's voor de XML-indexen en volledige-tekstindexen voor het object ook meegeteld in het totaal reserved en index_size de resultaten.

Als ruimtegebruik wordt berekend voor een database of een object dat een ruimtelijke index is, bevatten de kolommen met de ruimtegrootte, zoals database_size, reserveden index_size, de grootte van de ruimtelijke index.

Wanneer @updateusage is opgegeven, scant de SQL Server Database Engine de gegevenspagina's in de database en worden de vereiste correcties aangebracht in de sys.allocation_units en sys.partitions catalogusweergaven met betrekking tot de opslagruimte die door elke tabel wordt gebruikt. Er zijn enkele situaties, bijvoorbeeld nadat een index is verwijderd, wanneer de ruimtegegevens voor de tabel mogelijk niet actueel zijn. @updateusage kan enige tijd in beslag nemen om te worden uitgevoerd op grote tabellen of databases. Gebruik @updateusage alleen wanneer u vermoedt dat onjuiste waarden worden geretourneerd en wanneer het proces geen nadelig effect heeft op andere gebruikers of processen in de database. Indien gewenst, DBCC UPDATEUSAGE kan afzonderlijk worden uitgevoerd.

Opmerking

Wanneer u grote indexen neerlegt of herbouwt, of grote tabellen verwijdert of afkappen, worden de werkelijke toewijzingen van pagina-transacties en de bijbehorende vergrendelingen uitgesteld totdat de transactiedoorvoeringen zijn doorgevoerd. Uitgestelde drop-bewerkingen geven toegewezen ruimte niet onmiddellijk vrij. De waarden die onmiddellijk na sp_spaceused het verwijderen of afkappen van een groot object worden geretourneerd, geven daarom mogelijk niet de werkelijke beschikbare schijfruimte weer.

Machtigingen

De machtiging om uit te voeren sp_spaceused wordt verleend aan de openbare rol. Alleen leden van de db_owner vaste databaserol kunnen de @updateusage parameter opgeven.

Voorbeelden

Eén. Informatie over schijfruimte over een tabel weergeven

In het volgende voorbeeld wordt informatie over schijfruimte voor de Vendor tabel en de bijbehorende indexen gerapporteerd.

USE AdventureWorks2022;
GO

EXECUTE sp_spaceused N'Purchasing.Vendor';
GO

B. Bijgewerkte ruimte-informatie over een database weergeven

In het volgende voorbeeld wordt de ruimte samengevat die in de huidige database wordt gebruikt en wordt de optionele parameter @updateusage gebruikt om ervoor te zorgen dat de huidige waarden worden geretourneerd.

USE AdventureWorks2022;
GO

EXECUTE sp_spaceused @updateusage = N'TRUE';
GO

C. Informatie over ruimtegebruik weergeven over de externe tabel die is gekoppeld aan een stretch-tabel

In het volgende voorbeeld ziet u een overzicht van de ruimte die wordt gebruikt door de externe tabel die is gekoppeld aan een stretch-tabel met behulp van het argument @mode om het externe doel op te geven. Zie Stretch Databasevoor meer informatie.

USE StretchedAdventureWorks2022;
GO

EXECUTE sp_spaceused N'Purchasing.Vendor', @mode = 'REMOTE_ONLY';

D. Informatie over ruimtegebruik voor een database weergeven in één resultatenset

In het volgende voorbeeld wordt het ruimtegebruik voor de huidige database in één resultatenset samengevat.

USE AdventureWorks2022;
GO

EXECUTE sp_spaceused @oneresultset = 1;

E. Informatie over ruimtegebruik weergeven voor een database met ten minste één MEMORY_OPTIMIZED bestandsgroep in één resultatenset

In het volgende voorbeeld wordt het ruimtegebruik voor de huidige database samengevat met ten minste één MEMORY_OPTIMIZED bestandsgroep in één resultatenset.

USE WideWorldImporters;
GO

EXECUTE sp_spaceused
    @updateusage = 'FALSE',
    @mode = 'ALL',
    @oneresultset = '1',
    @include_total_xtp_storage = '1';
GO

F. Informatie over ruimtegebruik weergeven voor een MEMORY_OPTIMIZED tabelobject in een database

In het volgende voorbeeld wordt het ruimtegebruik voor een MEMORY_OPTIMIZED tabelobject in de huidige database samengevat met ten minste één MEMORY_OPTIMIZED bestandsgroep.

USE WideWorldImporters;
GO

EXECUTE sp_spaceused
    @objname = N'VehicleTemperatures',
    @updateusage = 'FALSE',
    @mode = 'ALL',
    @oneresultset = '0',
    @include_total_xtp_storage = '1';
GO