Sdílet prostřednictvím


sp_spaceused (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytický platformní systém (PDW)

Uložená procedura sp_spaceused systému zobrazí jednu z těchto akcí:

  • počet řádků, rezervovaného místa na disku a místo na disku používané tabulkou, indexovaným zobrazením nebo frontou služby Service Broker v aktuální databázi

  • rezervované místo na disku a využité celou databází

Transact-SQL konvence syntaxe

Syntaxe

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

Poznámka:

Tato syntaxe není podporována bezserverovým fondem SQL ve službě Azure Synapse Analytics.

Argumenty

V případě systému Azure Synapse Analytics a Platform Platform System (PDW) sp_spaceused musí být zadány pojmenované parametry (například sp_spaceused (@objname= N'Table1');), a nespoléhat se na řadové umístění parametrů.

[ @objname = ] N'objname'

Kvalifikovaný nebo nekvalifikovaný název tabulky, indexovaného zobrazení nebo fronty, pro kterou se požadují informace o využití místa. @objname je nvarchar(776) s výchozím nastavením NULL. Uvozovky jsou vyžadovány pouze v případě, že je zadán kvalifikovaný název objektu. Pokud je zadaný plně kvalifikovaný název objektu (včetně názvu databáze), musí být název aktuální databáze.

Pokud není zadaný @objname , vrátí se výsledky pro celou databázi.

Poznámka:

Azure Synapse Analytics a Platform Platform System (PDW) podporují pouze databázové a tabulkové objekty.

[ @updateusage = ] 'updateusage'

Indikuje DBCC UPDATEUSAGE , že by se měly spustit, aby se aktualizovaly informace o využití místa. @updateusage je varchar(5) s výchozím nastavením false. Pokud není zadaný @objname , příkaz se spustí v celé databázi. V opačném případě se příkaz spustí na @objname. Hodnoty mohou být true nebo false.

[ @mode = ] 'mode'

Určuje rozsah výsledků. U roztažené tabulky nebo databáze umožňuje parametr @mode zahrnout nebo vyloučit vzdálenou část objektu. Další informace najdete v tématu Stretch Database.

Důležité

Funkce Stretch Database je v SQL Serveru 2022 (16.x) a Azure SQL Database zastaralá. Tato funkce bude odebrána v budoucí verzi databázového stroje. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.

@mode je varchar(11) a může to být jedna z těchto hodnot.

Hodnota Popis
ALL (výchozí) Vrátí statistiku úložiště objektu nebo databáze, včetně místní i vzdálené části.
LOCAL_ONLY Vrátí statistiku úložiště pouze místní části objektu nebo databáze. Pokud objekt nebo databáze není povolená funkce Stretch, vrátí stejnou statistiku jako při @mode .ALL
REMOTE_ONLY Vrátí statistiku úložiště pouze vzdálené části objektu nebo databáze. Tato možnost vyvolá chybu, pokud je splněna jedna z následujících podmínek:

Tabulka není povolená pro funkci Stretch.

Tabulka je povolená pro funkci Stretch, ale nikdy jste nepovolili migraci dat. V tomto případě vzdálená tabulka ještě nemá schéma.

Uživatel vzdálenou tabulku ručně zahodil.

Zřizování vzdáleného archivu dat vrátilo stav Úspěch, ale ve skutečnosti se nezdařilo.

[ @oneresultset = ] oneresultset

Určuje, zda se má vrátit jedna sada výsledků. @oneresultset je bit a může to být jedna z těchto hodnot:

Hodnota Popis
0 (výchozí) Pokud @objname má hodnotu null nebo není zadána, vrátí se dvě sady výsledků.
1 Pokud jeNULL @objname nebo není zadána, vrátí se jedna sada výsledků.

[ @include_total_xtp_storage = ] include_total_xtp_storage

Platí pro: SQL Server 2017 (14.x) a novější verze a SQL Database

Pokud je @oneresultset nastavena na 1, tento parametr určuje, zda jedna sada výsledků obsahuje sloupce pro MEMORY_OPTIMIZED_DATA úložiště. @include_total_xtp_storage je bit s výchozím nastavením 0. Pokud 1jsou sloupce XTP zahrnuté do sady výsledků.

Hodnoty návratového kódu

0 (úspěch) nebo 1 (selhání).

Sada výsledků

Pokud @objname vynecháte a hodnota @oneresultset je 0, vrátí se následující sady výsledků, aby poskytovaly informace o aktuální velikosti databáze.

Název sloupce Datový typ Popis
database_name nvarchar(128) Název aktuální databáze.
database_size varchar(18) Velikost aktuální databáze v megabajtech database_size zahrnuje jak data, tak soubory protokolu.
unallocated space varchar(18) Mezera v databázi, která není vyhrazena pro databázové objekty.
Název sloupce Datový typ Popis
reserved varchar(18) Celkové množství místa přiděleného objekty v databázi.
data varchar(18) Celkové množství místa používaného daty
index_size varchar(18) Celkové množství místa používaného indexy
unused varchar(18) Celková velikost místa vyhrazená pro objekty v databázi, ale dosud nebyla použita.

Pokud @objname vynecháte a hodnota @oneresultset je 1, vrátí se následující sada výsledků, která poskytuje informace o aktuální velikosti databáze.

Název sloupce Datový typ Popis
database_name nvarchar(128) Název aktuální databáze.
database_size varchar(18) Velikost aktuální databáze v megabajtech database_size zahrnuje jak data, tak soubory protokolu.
unallocated space varchar(18) Mezera v databázi, která není vyhrazena pro databázové objekty.
reserved varchar(18) Celkové množství místa přiděleného objekty v databázi.
data varchar(18) Celkové množství místa používaného daty
index_size varchar(18) Celkové množství místa používaného indexy
unused varchar(18) Celková velikost místa vyhrazená pro objekty v databázi, ale dosud nebyla použita.

Pokud je zadán @objname , vrátí se pro zadaný objekt následující sada výsledků.

Název sloupce Datový typ Popis
name nvarchar(128) Název objektu, pro který byly požadovány informace o využití místa.

Název schématu objektu není vrácen. Pokud je název schématu povinný, získejte ekvivalentní informace o velikosti pomocí sys.dm_db_partition_stats nebo sys.dm_db_index_physical_stats zobrazení dynamické správy.
rows char(20) Počet řádků existujících v tabulce Pokud je zadaný objekt frontou Service Broker, tento sloupec označuje počet zpráv ve frontě.
reserved varchar(18) Celková velikost rezervovaného místa pro @objname
data varchar(18) Celkové množství místa používaného daty v @objname
index_size varchar(18) Celkové množství místa používané indexy v @objname
unused varchar(18) Celková velikost místa vyhrazená pro @objname , ale zatím se nepoužívala.

Tento režim je výchozí, pokud nejsou zadány žádné parametry. Následující sady výsledků vrátí podrobné informace o velikosti databáze na disku.

Název sloupce Datový typ Popis
database_name nvarchar(128) Název aktuální databáze.
database_size varchar(18) Velikost aktuální databáze v megabajtech database_size zahrnuje jak data, tak soubory protokolu. Pokud databáze obsahuje MEMORY_OPTIMIZED_DATA skupinu souborů, tato hodnota zahrnuje celkovou velikost na disku všech souborů kontrolních bodů ve skupině souborů.
unallocated space varchar(18) Mezera v databázi, která není vyhrazena pro databázové objekty. Pokud databáze obsahuje MEMORY_OPTIMIZED_DATA skupinu souborů, tato hodnota zahrnuje celkovou velikost souborů kontrolních bodů na disku se stavem PRECREATED ve skupině souborů.

Prostor používaný tabulkami v databázi. Tato sada výsledků neodráží tabulky optimalizované pro paměť, protože neexistuje žádné účtování využití disků podle tabulek:

Název sloupce Datový typ Popis
reserved varchar(18) Celkové množství místa přiděleného objekty v databázi.
data varchar(18) Celkové množství místa používaného daty
index_size varchar(18) Celkové množství místa používaného indexy
unused varchar(18) Celková velikost místa vyhrazená pro objekty v databázi, ale dosud nebyla použita.

Následující sada výsledků se vrátí pouze v případě, že databáze obsahuje MEMORY_OPTIMIZED_DATA skupinu souborů s alespoň jedním kontejnerem:

Název sloupce Datový typ Popis
xtp_precreated varchar(18) Celková velikost souborů kontrolních bodů se stavem PRECREATEDv kB. Počítá se do nepřiděleného prostoru v databázi jako celku. Pokud například existuje 600 000 kB předem vytvořených souborů kontrolních bodů, obsahuje tento sloupec 600000 KB.
xtp_used varchar(18) Celková velikost souborů kontrolních bodů se stavy UNDER CONSTRUCTION, ACTIVEa MERGE TARGET, v kB. Tato hodnota je místo na disku, které se aktivně používá pro data v tabulkách optimalizovaných pro paměť.
xtp_pending_truncation varchar(18) Celková velikost souborů kontrolních bodů se stavem WAITING_FOR_LOG_TRUNCATIONv kB. Tato hodnota je místo na disku používané pro soubory kontrolních bodů, které čekají na vyčištění, jakmile dojde ke zkrácení protokolu.

Pokud @objname vynecháte, hodnota @oneresultset je 1a @include_total_xtp_storage je 1, vrátí se následující jedna sada výsledků, která poskytuje informace o aktuální velikosti databáze. Pokud je0 @include_total_xtp_storage (výchozí), poslední tři sloupce se vynechá.

Název sloupce Datový typ Popis
database_name nvarchar(128) Název aktuální databáze.
database_size varchar(18) Velikost aktuální databáze v megabajtech database_size zahrnuje jak data, tak soubory protokolu. Pokud databáze obsahuje MEMORY_OPTIMIZED_DATA skupinu souborů, tato hodnota zahrnuje celkovou velikost na disku všech souborů kontrolních bodů ve skupině souborů.
unallocated space varchar(18) Mezera v databázi, která není vyhrazena pro databázové objekty. Pokud databáze obsahuje MEMORY_OPTIMIZED_DATA skupinu souborů, tato hodnota zahrnuje celkovou velikost souborů kontrolních bodů na disku se stavem PRECREATED ve skupině souborů.
reserved varchar(18) Celkové množství místa přiděleného objekty v databázi.
data varchar(18) Celkové množství místa používaného daty
index_size varchar(18) Celkové množství místa používaného indexy
unused varchar(18) Celková velikost místa vyhrazená pro objekty v databázi, ale dosud nebyla použita.
xtp_precreated 1 varchar(18) Celková velikost souborů kontrolních bodů se stavem PRECREATEDv kB. Tato hodnota se počítá do nepřiděleného prostoru v databázi jako celku. Vrátí NULL , pokud databáze nemá MEMORY_OPTIMIZED_DATA skupinu souborů s alespoň jedním kontejnerem.
xtp_used 1 varchar(18) Celková velikost souborů kontrolních bodů se stavy UNDER CONSTRUCTION, ACTIVEa MERGE TARGET, v kB. Tato hodnota je místo na disku, které se aktivně používá pro data v tabulkách optimalizovaných pro paměť. Vrátí NULL , pokud databáze nemá MEMORY_OPTIMIZED_DATA skupinu souborů s alespoň jedním kontejnerem.
xtp_pending_truncation 1 varchar(18) Celková velikost souborů kontrolních bodů se stavem WAITING_FOR_LOG_TRUNCATIONv kB. Tato hodnota je místo na disku používané pro soubory kontrolních bodů, které čekají na vyčištění, jakmile dojde ke zkrácení protokolu. Vrátí NULL , pokud databáze nemá MEMORY_OPTIMIZED_DATA skupinu souborů s alespoň jedním kontejnerem.

1 Zahrnuta pouze v případě , že je @include_total_xtp_storage nastavena na 1.

Poznámky

Hodnota database_size je obecně větší než součetreservedunallocated space + , protože zahrnuje velikost souborů protokolu, ale reservedunallocated_space zvažte pouze datové stránky. V některých případech se službou Azure Synapse Analytics nemusí být toto tvrzení pravdivé.

Stránky, které používají indexy XML a fulltextové indexy, jsou zahrnuty do index_size obou sad výsledků. Při zadání @objname se stránky indexů XML a fulltextových indexů objektu započítávají také do celkového reserved součtu a index_size výsledků.

Pokud se pro databázi nebo objekt, který je prostorovým indexem, počítá využití místa, sloupce velikosti mezer, například database_size, reserveda index_size, zahrnují velikost prostorového indexu.

Po zadání @updateusage databázový stroj SQL Serveru prohledá datové stránky v databázi a provede všechny požadované opravy sys.allocation_units zobrazení a sys.partitions zobrazení katalogu týkající se úložného prostoru používaného jednotlivými tabulkami. Například po vyřazení indexu existují situace, kdy informace o prostoru pro tabulku nemusí být aktuální. @updateusage může nějakou dobu trvat, než se spustí u velkých tabulek nebo databází. Použijte @updateusage pouze tehdy, když máte podezření na vrácení nesprávných hodnot a pokud proces nemá nepříznivý vliv na jiné uživatele nebo procesy v databázi. Pokud je to upřednostňované, DBCC UPDATEUSAGE můžete spustit samostatně.

Poznámka:

Když vyřadíte nebo znovu sestavíte velké indexy, nebo vyřadíte nebo zkrátíte velké tabulky, databázový stroj rozmaže skutečné přidělení stránky a jejich přidružené zámky, dokud se transakce potvrzení. Operace odloženého vyřazení nevyvolá přidělené místo okamžitě. Proto hodnoty vrácené sp_spaceused okamžitě po vyřazení nebo zkrácení velkého objektu nemusí odrážet skutečné volné místo na disku.

Povolení

Oprávnění ke spuštění sp_spaceused je uděleno veřejné roli. Parametr @updateusage můžou zadat pouze členové db_owner pevné databázové role.

Příklady

A. Zobrazení informací o místě na disku v tabulce

Následující příklad hlásí informace o místu Vendor na disku pro tabulku a její indexy.

USE AdventureWorks2022;
GO

EXECUTE sp_spaceused N'Purchasing.Vendor';
GO

B. Zobrazení aktualizovaných informací o prostoru databáze

Následující příklad shrnuje místo použité v aktuální databázi a používá volitelný parametr @updateusage k zajištění vrácení aktuálních hodnot.

USE AdventureWorks2022;
GO

EXECUTE sp_spaceused @updateusage = N'TRUE';
GO

C. Zobrazení informací o využití místa pro vzdálenou tabulku přidruženou k tabulce s povolenou funkcí Stretch

Následující příklad shrnuje prostor používaný vzdálenou tabulkou přidruženou k tabulce s povolenou funkcí Stretch pomocí argumentu @mode k určení vzdáleného cíle. Další informace naleznete v tématu Stretch Database.

USE StretchedAdventureWorks2022;
GO

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

D. Zobrazení informací o využití místa pro databázi v jedné sadě výsledků

Následující příklad shrnuje využití místa pro aktuální databázi v jedné sadě výsledků.

USE AdventureWorks2022;
GO

EXECUTE sp_spaceused @oneresultset = 1;

E. Zobrazení informací o využití místa pro databázi s alespoň jednou skupinou souborů MEMORY_OPTIMIZED v jedné sadě výsledků

Následující příklad shrnuje využití místa pro aktuální databázi s alespoň jednou MEMORY_OPTIMIZED skupinou souborů v jedné sadě výsledků.

USE WideWorldImporters;
GO

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

F. Zobrazení informací o využití místa pro objekt tabulky MEMORY_OPTIMIZED v databázi

Následující příklad shrnuje využití místa pro MEMORY_OPTIMIZED objekt tabulky v aktuální databázi s alespoň jednou MEMORY_OPTIMIZED skupinou souborů.

USE WideWorldImporters;
GO

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