Dela via


sp_spaceused (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Den sp_spaceused system lagrade proceduren visar antingen:

  • antalet rader, reserverat diskutrymme och diskutrymme som används av en tabell, indexerad vy eller Service Broker-kö i den aktuella databasen

  • det reserverade diskutrymmet och som används av hela databasen

Transact-SQL syntaxkonventioner

Syntax

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

Anmärkning

Den här syntaxen stöds inte av en serverlös SQL-pool i Azure Synapse Analytics.

Argumentpunkter

För Azure Synapse Analytics and Analytics Platform System (PDW) sp_spaceused måste du ange namngivna parametrar (till exempel sp_spaceused (@objname= N'Table1');) i stället för att förlita sig på parametrarnas ordningstal.

[ @objname = ] N'objname'

Det kvalificerade eller icke-kvalificerade namnet på tabellen, den indexerade vyn eller kön för vilken information om utrymmesanvändning begärs. @objname är nvarchar(776), med standardvärdet NULL. Citattecken krävs endast om ett kvalificerat objektnamn har angetts. Om ett fullständigt kvalificerat objektnamn (inklusive ett databasnamn) anges måste databasnamnet vara namnet på den aktuella databasen.

Om @objname inte anges returneras resultaten för hela databasen.

Anmärkning

Azure Synapse Analytics and Analytics Platform System (PDW) stöder endast databas- och tabellobjekt.

[ @updateusage = ] "updateusage"

Anger DBCC UPDATEUSAGE att ska köras för att uppdatera information om utrymmesanvändning. @updateusage är varchar(5), med standardvärdet false. När @objname inte har angetts körs -instruktionen på hela databasen. Annars körs -instruktionen på @objname. Värden kan vara true eller false.

[ @mode = ] "läge"

Anger resultatets omfattning. För en utsträckt tabell eller databas kan du med parametern @mode inkludera eller exkludera fjärrdelen av objektet. Mer information finns i Stretch Database.

Viktigt!

Stretch Database är inaktuell i SQL Server 2022 (16.x) och Azure SQL Database. Den här funktionen tas bort i en framtida version av databasmotorn. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen.

@mode är varchar(11) och kan vara ett av dessa värden.

Värde Beskrivning
ALL (standardinställning) Returnerar lagringsstatistiken för objektet eller databasen, inklusive både den lokala delen och fjärrdelen.
LOCAL_ONLY Returnerar lagringsstatistiken för endast den lokala delen av objektet eller databasen. Om objektet eller databasen inte är Stretch-aktiverad returnerar samma statistik som när @mode är ALL.
REMOTE_ONLY Returnerar lagringsstatistiken för endast fjärrdelen av objektet eller databasen. Det här alternativet genererar ett fel när något av följande villkor är sant:

Tabellen är inte aktiverad för Stretch.

Tabellen är aktiverad för Stretch, men du har aldrig aktiverat datamigrering. I det här fallet har fjärrtabellen ännu inget schema.

Användaren tappade fjärrtabellen manuellt.

Etableringen av fjärrdataarkivet returnerade statusen Lyckades, men det misslyckades i själva verket.

[ @oneresultset = ] oneresultset

Anger om en enskild resultatuppsättning ska returneras. @oneresultset är lite och kan vara ett av följande värden:

Värde Beskrivning
0 (standardinställning) När @objname är null eller inte har angetts returneras två resultatuppsättningar.
1 När @objname har NULL angetts eller inte har angetts returneras en enda resultatuppsättning.

[ @include_total_xtp_storage = ] include_total_xtp_storage

Gäller för: SQL Server 2017 (14.x) och senare versioner och SQL Database

När @oneresultset är inställt på 1avgör den här parametern om den enskilda resultatuppsättningen innehåller kolumner för MEMORY_OPTIMIZED_DATA lagring. @include_total_xtp_storage är bit, med standardvärdet 0. Om 1inkluderas XTP-kolumner i resultatuppsättningen.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Resultatuppsättning

Om @objname utelämnas och värdet för @oneresultset är 0returneras följande resultatuppsättningar för att ange aktuell databasstorleksinformation.

Kolumnnamn Datatyp Beskrivning
database_name nvarchar(128) Namnet på den aktuella databasen.
database_size varchar(18) Storleken på den aktuella databasen i megabyte. database_size innehåller både data och loggfiler.
unallocated space varchar(18) Utrymme i databasen som inte är reserverat för databasobjekt.
Kolumnnamn Datatyp Beskrivning
reserved varchar(18) Total mängd utrymme som allokerats av objekt i databasen.
data varchar(18) Total mängd utrymme som används av data.
index_size varchar(18) Total mängd utrymme som används av index.
unused varchar(18) Total mängd utrymme som reserverats för objekt i databasen, men som ännu inte används.

Om @objname utelämnas och värdet för @oneresultset är 1returneras följande enskilda resultatuppsättning för att ange aktuell databasstorleksinformation.

Kolumnnamn Datatyp Beskrivning
database_name nvarchar(128) Namnet på den aktuella databasen.
database_size varchar(18) Storleken på den aktuella databasen i megabyte. database_size innehåller både data och loggfiler.
unallocated space varchar(18) Utrymme i databasen som inte är reserverat för databasobjekt.
reserved varchar(18) Total mängd utrymme som allokerats av objekt i databasen.
data varchar(18) Total mängd utrymme som används av data.
index_size varchar(18) Total mängd utrymme som används av index.
unused varchar(18) Total mängd utrymme som reserverats för objekt i databasen, men som ännu inte används.

Om @objname anges returneras följande resultatuppsättning för det angivna objektet.

Kolumnnamn Datatyp Beskrivning
name nvarchar(128) Namnet på det objekt som information om utrymmesanvändning begärdes för.

Objektets schemanamn returneras inte. Om schemanamnet krävs använder du sys.dm_db_partition_stats eller sys.dm_db_index_physical_stats dynamiska hanteringsvyer för att hämta motsvarande storleksinformation.
rows char(20) Antal rader som finns i tabellen. Om det angivna objektet är en Service Broker-kö anger den här kolumnen antalet meddelanden i kön.
reserved varchar(18) Totalt reserverat utrymme för @objname.
data varchar(18) Total mängd utrymme som används av data i @objname.
index_size varchar(18) Total mängd utrymme som används av index i @objname.
unused varchar(18) Totalt utrymme reserverat för @objname men används ännu inte.

Det här läget är standard när inga parametrar har angetts. Följande resultatuppsättningar returneras med information om storleken på diskdatabasen.

Kolumnnamn Datatyp Beskrivning
database_name nvarchar(128) Namnet på den aktuella databasen.
database_size varchar(18) Storleken på den aktuella databasen i megabyte. database_size innehåller både data och loggfiler. Om databasen har en MEMORY_OPTIMIZED_DATA filgrupp innehåller det här värdet den totala storleken på disken för alla kontrollpunktsfiler i filgruppen.
unallocated space varchar(18) Utrymme i databasen som inte är reserverat för databasobjekt. Om databasen har en MEMORY_OPTIMIZED_DATA filgrupp innehåller det här värdet den totala storleken på disken för kontrollpunktsfilerna med tillstånd PRECREATED i filgruppen.

Utrymme som används av tabeller i databasen. Den här resultatuppsättningen återspeglar inte minnesoptimerade tabeller eftersom det inte finns någon redovisning per tabell av diskanvändning:

Kolumnnamn Datatyp Beskrivning
reserved varchar(18) Total mängd utrymme som allokerats av objekt i databasen.
data varchar(18) Total mängd utrymme som används av data.
index_size varchar(18) Total mängd utrymme som används av index.
unused varchar(18) Total mängd utrymme som reserverats för objekt i databasen, men som ännu inte används.

Följande resultatuppsättning returneras endast om databasen har en MEMORY_OPTIMIZED_DATA filgrupp med minst en container:

Kolumnnamn Datatyp Beskrivning
xtp_precreated varchar(18) Total storlek på kontrollpunktsfiler med tillståndet PRECREATED, i KB. Räknas mot det oallokerade utrymmet i databasen som helhet. Om det till exempel finns 600 000 KB för förskapade kontrollpunktsfiler innehåller 600000 KBden här kolumnen .
xtp_used varchar(18) Total storlek på kontrollpunktsfiler med tillstånden UNDER CONSTRUCTION, ACTIVEoch MERGE TARGET, i KB. Det här värdet är diskutrymmet som aktivt används för data i minnesoptimerade tabeller.
xtp_pending_truncation varchar(18) Total storlek på kontrollpunktsfiler med tillståndet WAITING_FOR_LOG_TRUNCATION, i KB. Det här värdet är diskutrymmet som används för kontrollpunktsfiler som väntar på rensning när loggtrunkeringen inträffar.

Om @objname utelämnas är 1värdet för @oneresultset , och @include_total_xtp_storage är 1returneras följande enskilda resultatuppsättning för att ange aktuell databasstorleksinformation. Om @include_total_xtp_storage är 0 (standard) utelämnas de tre sista kolumnerna.

Kolumnnamn Datatyp Beskrivning
database_name nvarchar(128) Namnet på den aktuella databasen.
database_size varchar(18) Storleken på den aktuella databasen i megabyte. database_size innehåller både data och loggfiler. Om databasen har en MEMORY_OPTIMIZED_DATA filgrupp innehåller det här värdet den totala storleken på disken för alla kontrollpunktsfiler i filgruppen.
unallocated space varchar(18) Utrymme i databasen som inte är reserverat för databasobjekt. Om databasen har en MEMORY_OPTIMIZED_DATA filgrupp innehåller det här värdet den totala storleken på disken för kontrollpunktsfilerna med tillstånd PRECREATED i filgruppen.
reserved varchar(18) Total mängd utrymme som allokerats av objekt i databasen.
data varchar(18) Total mängd utrymme som används av data.
index_size varchar(18) Total mängd utrymme som används av index.
unused varchar(18) Total mängd utrymme som reserverats för objekt i databasen, men som ännu inte används.
xtp_precreated 1 varchar(18) Total storlek på kontrollpunktsfiler med tillståndet PRECREATED, i KB. Det här värdet räknas mot det oallokerade utrymmet i databasen som helhet. Returnerar NULL om databasen inte har en MEMORY_OPTIMIZED_DATA filgrupp med minst en container.
xtp_used 1 varchar(18) Total storlek på kontrollpunktsfiler med tillstånden UNDER CONSTRUCTION, ACTIVEoch MERGE TARGET, i KB. Det här värdet är diskutrymmet som aktivt används för data i minnesoptimerade tabeller. Returnerar NULL om databasen inte har en MEMORY_OPTIMIZED_DATA filgrupp med minst en container.
xtp_pending_truncation 1 varchar(18) Total storlek på kontrollpunktsfiler med tillståndet WAITING_FOR_LOG_TRUNCATION, i KB. Det här värdet är diskutrymmet som används för kontrollpunktsfiler som väntar på rensning när loggtrunkeringen inträffar. Returnerar NULL om databasen inte har en MEMORY_OPTIMIZED_DATA filgrupp med minst en container.

1 Inkluderas endast om @include_total_xtp_storage är inställt på 1.

Anmärkningar

Värdet database_size är vanligtvis större än summan av reservedunallocated space + eftersom det innehåller storleken på loggfiler, men reserved och unallocated_space överväg endast datasidor. I vissa fall med Azure Synapse Analytics kanske den här instruktionen inte är sann.

Sidor som används av XML-index och fulltextindex ingår i index_size båda resultatuppsättningarna. När @objname anges räknas även sidorna för XML-indexen och fulltextindexen för objektet i totalsumman reserved och index_size resultaten.

Om utrymmesanvändningen beräknas för en databas eller ett objekt som är ett rumsligt index, inkluderar kolumnerna med utrymmesstorlek, till exempel database_size, reservedoch index_size, storleken på det rumsliga indexet.

När @updateusage anges söker SQL Server Database Engine igenom datasidorna i databasen och gör eventuella nödvändiga korrigeringar av vyerna sys.allocation_units och sys.partitions katalogvyerna för lagringsutrymmet som används av varje tabell. Det finns vissa situationer, till exempel när ett index har släppts, när utrymmesinformationen för tabellen kanske inte är aktuell. @updateusage kan ta lite tid att köra på stora tabeller eller databaser. Använd endast @updateusage när du misstänker att felaktiga värden returneras och när processen inte har en negativ effekt på andra användare eller processer i databasen. Om du vill DBCC UPDATEUSAGE kan du köra separat.

Anmärkning

När du släpper eller återskapar stora index, eller släpper eller trunkerar stora tabeller, defersar databasmotorn de faktiska sidborttagningarna och deras associerade lås tills transaktionen har checkats in. Uppskjutna släppåtgärder frigör inte allokerat utrymme omedelbart. Därför kanske värdena som returneras sp_spaceused direkt efter att ett stort objekt har släppts eller trunkerats kanske inte återspeglar det faktiska tillgängliga diskutrymmet.

Behörigheter

Behörighet att köra sp_spaceused beviljas till den offentliga rollen. Endast medlemmar i den db_owner fasta databasrollen kan ange parametern @updateusage.

Exempel

A. Visa diskutrymmesinformation om en tabell

I följande exempel rapporterar vi diskutrymmesinformation för Vendor tabellen och dess index.

USE AdventureWorks2022;
GO

EXECUTE sp_spaceused N'Purchasing.Vendor';
GO

B. Visa uppdaterad utrymmesinformation om en databas

I följande exempel sammanfattas det utrymme som används i den aktuella databasen och den valfria parametern @updateusage för att säkerställa att aktuella värden returneras.

USE AdventureWorks2022;
GO

EXECUTE sp_spaceused @updateusage = N'TRUE';
GO

C. Visa information om utrymmesanvändning om fjärrtabellen som är associerad med en Stretch-aktiverad tabell

I följande exempel sammanfattas det utrymme som används av fjärrtabellen som är associerad med en Stretch-aktiverad tabell med hjälp av argumentet @mode för att ange fjärrmålet. Mer information finns i Stretch Database.

USE StretchedAdventureWorks2022;
GO

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

D. Visa information om utrymmesanvändning för en databas i en enda resultatuppsättning

I följande exempel sammanfattas utrymmesanvändningen för den aktuella databasen i en enda resultatuppsättning.

USE AdventureWorks2022;
GO

EXECUTE sp_spaceused @oneresultset = 1;

E. Visa information om utrymmesanvändning för en databas med minst en MEMORY_OPTIMIZED filgrupp i en enda resultatuppsättning

I följande exempel sammanfattas utrymmesanvändningen för den aktuella databasen med minst en MEMORY_OPTIMIZED filgrupp i en enda resultatuppsättning.

USE WideWorldImporters;
GO

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

F. Visa information om utrymmesanvändning för ett MEMORY_OPTIMIZED tabellobjekt i en databas

I följande exempel sammanfattas utrymmesanvändningen för ett MEMORY_OPTIMIZED tabellobjekt i den aktuella databasen med minst en MEMORY_OPTIMIZED filgrupp.

USE WideWorldImporters;
GO

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