Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytický 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í
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 1
jsou 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 PRECREATED v 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 , ACTIVE a 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_TRUNCATION v 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 1
a @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 PRECREATED v 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 , ACTIVE a 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_TRUNCATION v 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četreserved
unallocated space
+ , protože zahrnuje velikost souborů protokolu, ale reserved
unallocated_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
, reserved
a 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
Související obsah
- VYTVOŘTE INDEX (Transact-SQL)
- VYTVOŘIT TABULKU (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)
- uložené procedury systému (Transact-SQL)