Megosztás a következőn keresztül:


sp_spaceused (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

A sp_spaceused rendszer által tárolt eljárás a következőket jeleníti meg:

  • a tábla, indexelt nézet vagy Service Broker-üzenetsor által használt sorok, fenntartott lemezterület és lemezterület száma az aktuális adatbázisban

  • a teljes adatbázis által fenntartott és felhasznált lemezterület

Transact-SQL szintaxis konvenciók

Szemantika

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

Megjegyzés:

Ezt a szintaxist az Azure Synapse Analytics kiszolgáló nélküli SQL-készlete nem támogatja.

Érvek

Az Azure Synapse Analytics and Analytics Platform System (PDW) sp_spaceused esetében az elnevezett paramétereket (például sp_spaceused (@objname= N'Table1');) kell megadnia, nem pedig a paraméterek sorrendi pozíciójára kell támaszkodnia.

[ @objname = ] N'objname'

Annak a táblának, indexelt nézetnek vagy üzenetsornak a minősített vagy nem minősített neve, amelyhez a területhasználati adatokat kérik. @objnamenvarchar(776), alapértelmezett értéke NULL. Idézőjelek csak minősített objektumnév megadása esetén szükségesek. Ha egy teljesen minősített objektumnév (beleértve az adatbázisnevet) van megadva, az adatbázis nevének az aktuális adatbázis nevének kell lennie.

Ha @objname nincs megadva, a rendszer a teljes adatbázis eredményeit adja vissza.

Megjegyzés:

Az Azure Synapse Analytics and Analytics Platform System (PDW) csak az adatbázis- és táblaobjektumokat támogatja.

[ @updateusage = ] 'updateusage'

Azt jelzi, DBCC UPDATEUSAGE hogy a helyhasználati adatok frissítéséhez futtatni kell. @updateusagea varchar(5), alapértelmezés szerint false. Ha nincs megadva @objname, az utasítás a teljes adatbázisban fut. Ellenkező esetben az utasítás @objname fut. Az értékek lehetnek true vagy false.

[ @mode = ] 'mode'

Az eredmények hatókörét jelzi. Egy kifeszített tábla vagy adatbázis esetében a @mode paraméter lehetővé teszi az objektum távoli részének belefoglalását vagy kizárását. További információ: Stretch Database.

Fontos

A Stretch Database elavult az SQL Server 2022 -ben (16.x) és az Azure SQL Database-ben. Ez a funkció az adatbázismotor egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását.

@modevarchar(11), és ezek egyike lehet.

Érték Leírás
ALL (alapértelmezett) Az objektum vagy adatbázis tárolási statisztikáit adja vissza, beleértve a helyi és a távoli részt is.
LOCAL_ONLY Csak az objektum vagy adatbázis helyi részének tárolási statisztikáit adja vissza. Ha az objektum vagy adatbázis nem stretch-kompatibilis, ugyanazokat a statisztikákat adja vissza, mint @modeALLesetén.
REMOTE_ONLY Csak az objektum vagy adatbázis távoli részének tárolási statisztikáit adja vissza. Ez a beállítás hibát jelez, ha az alábbi feltételek egyike teljesül:

A tábla nincs engedélyezve a Stretch esetében.

A tábla engedélyezve van a Stretch esetében, de még soha nem engedélyezte az adatmigrálást. Ebben az esetben a távoli tábla még nem rendelkezik sémával.

A felhasználó manuálisan elvetette a távoli táblát.

A távoli adatarchívum kiépítése sikeres állapotot adott vissza, de valójában nem sikerült.

[ @oneresultset = ] oneresultset

Azt jelzi, hogy egyetlen eredményhalmazt szeretne-e visszaadni. @oneresultsetbit, és az alábbi értékek egyike lehet:

Érték Leírás
0 (alapértelmezett) Ha @objname null értékű, vagy nincs megadva, a rendszer két eredményhalmazt ad vissza.
1 Ha @objname van NULL megadva, vagy nincs megadva, a rendszer egyetlen eredményhalmazt ad vissza.

[ @include_total_xtp_storage = ] include_total_xtp_storage

A következőkre vonatkozik: AZ SQL Server 2017 (14.x) és újabb verziói, valamint az SQL Database

Ha @oneresultset értékre 1van állítva, ez a paraméter határozza meg, hogy az egyetlen eredményhalmaz tartalmaz-e tároszlopokat MEMORY_OPTIMIZED_DATA . @include_total_xtp_storagebit, alapértelmezés szerint 0. Ha 1az eredményhalmaz XTP-oszlopokat tartalmaz.

Kódértékek visszaadása

0 (sikeres) vagy 1 (hiba).

Eredményhalmaz

Ha @objname nincs megadva, és a @oneresultset értéke az 0, a rendszer az alábbi eredményhalmazokat adja vissza az adatbázis aktuális méretadatainak megadásához.

Oszlop név Adattípus Leírás
database_name nvarchar(128) Az aktuális adatbázis neve.
database_size varchar(18) Az aktuális adatbázis mérete megabájtban. database_size adat- és naplófájlokat is tartalmaz.
unallocated space varchar(18) Az adatbázis-objektumok számára nem fenntartott hely az adatbázisban.
Oszlop név Adattípus Leírás
reserved varchar(18) Az adatbázisban lévő objektumok által lefoglalt terület teljes mennyisége.
data varchar(18) Az adatok által felhasznált terület teljes mennyisége.
index_size varchar(18) Az indexek által felhasznált terület teljes mennyisége.
unused varchar(18) Az adatbázisban lévő objektumok számára fenntartott, de még nem használt terület teljes mennyisége.

Ha @objname nincs megadva, és a @oneresultset értéke az 1, a rendszer az alábbi eredményhalmazt adja vissza az adatbázis aktuális méretadatainak megadásához.

Oszlop név Adattípus Leírás
database_name nvarchar(128) Az aktuális adatbázis neve.
database_size varchar(18) Az aktuális adatbázis mérete megabájtban. database_size adat- és naplófájlokat is tartalmaz.
unallocated space varchar(18) Az adatbázis-objektumok számára nem fenntartott hely az adatbázisban.
reserved varchar(18) Az adatbázisban lévő objektumok által lefoglalt terület teljes mennyisége.
data varchar(18) Az adatok által felhasznált terület teljes mennyisége.
index_size varchar(18) Az indexek által felhasznált terület teljes mennyisége.
unused varchar(18) Az adatbázisban lévő objektumok számára fenntartott, de még nem használt terület teljes mennyisége.

Ha @objname van megadva, a rendszer a következő eredményhalmazt adja vissza a megadott objektumhoz.

Oszlop név Adattípus Leírás
name nvarchar(128) Annak az objektumnak a neve, amelyhez a területhasználati adatokat kérték.

Az objektum sémaneve nem lesz visszaadva. Ha a sémanév megadása kötelező, használja a sys.dm_db_partition_stats vagy sys.dm_db_index_physical_stats dinamikus felügyeleti nézeteket az egyenértékű méretadatok beszerzéséhez.
rows char(20) A táblázatban meglévő sorok száma. Ha a megadott objektum egy Service Broker-üzenetsor, ez az oszlop az üzenetsorban lévő üzenetek számát jelzi.
reserved varchar(18) Fenntartott terület teljes mennyisége @objname számára.
data varchar(18) A @objname adatai által felhasznált teljes terület.
index_size varchar(18) Az indexek által a @objname használt teljes terület.
unused varchar(18) A @objname számára fenntartott, de még nem használt terület teljes mennyisége.

Ez az alapértelmezett mód, ha nincsenek megadva paraméterek. A rendszer a következő eredményhalmazokat adja vissza a lemezen lévő adatbázis méretadatainak részletezésével.

Oszlop név Adattípus Leírás
database_name nvarchar(128) Az aktuális adatbázis neve.
database_size varchar(18) Az aktuális adatbázis mérete megabájtban. database_size adat- és naplófájlokat is tartalmaz. Ha az adatbázis rendelkezik fájlcsoporttal MEMORY_OPTIMIZED_DATA , ez az érték tartalmazza a fájlcsoportban lévő összes ellenőrzőpont-fájl teljes lemezméretét.
unallocated space varchar(18) Az adatbázis-objektumok számára nem fenntartott hely az adatbázisban. Ha az adatbázis rendelkezik MEMORY_OPTIMIZED_DATA fájlcsoporttal, ez az érték tartalmazza a fájlcsoport állapotú PRECREATED ellenőrzőpont-fájljainak lemezen belüli teljes méretét.

Az adatbázis táblái által használt terület. Ez az eredményhalmaz nem tükrözi a memóriaoptimalizált táblákat, mivel a lemezhasználat táblánkénti könyvelése nem történt meg:

Oszlop név Adattípus Leírás
reserved varchar(18) Az adatbázisban lévő objektumok által lefoglalt terület teljes mennyisége.
data varchar(18) Az adatok által felhasznált terület teljes mennyisége.
index_size varchar(18) Az indexek által felhasznált terület teljes mennyisége.
unused varchar(18) Az adatbázisban lévő objektumok számára fenntartott, de még nem használt terület teljes mennyisége.

A következő eredményhalmaz csak akkor lesz visszaadva , ha az adatbázis rendelkezik MEMORY_OPTIMIZED_DATA legalább egy tárolóval rendelkező fájlcsoporttal:

Oszlop név Adattípus Leírás
xtp_precreated varchar(18) Állapotú PRECREATEDellenőrzőpontfájlok teljes mérete kb-ban. Az adatbázis teljes felszabadított területére számít. Ha például 600 000 KB előre létrehozott ellenőrzőpont-fájl található, az oszlop tartalmazza 600000 KBa fájlt.
xtp_used varchar(18) Az ellenőrzőpont-fájlok teljes mérete a ACTIVEKB-ban lévő állapotokkal UNDER CONSTRUCTIONés MERGE TARGETállapotokkal. Ez az érték a memóriaoptimalizált táblák adataihoz aktívan használt lemezterület.
xtp_pending_truncation varchar(18) Állapotú WAITING_FOR_LOG_TRUNCATIONellenőrzőpontfájlok teljes mérete kb-ban. Ez az érték a napló csonkolását követően a törlésre váró ellenőrzőpont-fájlok lemezterülete.

Ha @objname nincs megadva, a @oneresultset1értéke és @include_total_xtp_storage értéke, 1a rendszer az alábbi egyetlen eredménykészletet adja vissza az adatbázis aktuális méretadatainak megadásához. Ha @include_total_xtp_storage ( 0 alapértelmezett), az utolsó három oszlop hiányzik.

Oszlop név Adattípus Leírás
database_name nvarchar(128) Az aktuális adatbázis neve.
database_size varchar(18) Az aktuális adatbázis mérete megabájtban. database_size adat- és naplófájlokat is tartalmaz. Ha az adatbázis rendelkezik fájlcsoporttal MEMORY_OPTIMIZED_DATA , ez az érték tartalmazza a fájlcsoportban lévő összes ellenőrzőpont-fájl teljes lemezméretét.
unallocated space varchar(18) Az adatbázis-objektumok számára nem fenntartott hely az adatbázisban. Ha az adatbázis rendelkezik MEMORY_OPTIMIZED_DATA fájlcsoporttal, ez az érték tartalmazza a fájlcsoport állapotú PRECREATED ellenőrzőpont-fájljainak lemezen belüli teljes méretét.
reserved varchar(18) Az adatbázisban lévő objektumok által lefoglalt terület teljes mennyisége.
data varchar(18) Az adatok által felhasznált terület teljes mennyisége.
index_size varchar(18) Az indexek által felhasznált terület teljes mennyisége.
unused varchar(18) Az adatbázisban lévő objektumok számára fenntartott, de még nem használt terület teljes mennyisége.
xtp_precreated 1 varchar(18) Állapotú PRECREATEDellenőrzőpontfájlok teljes mérete kb-ban. Ez az érték az adatbázis teljes felszabadított területére számít. Akkor adja NULL vissza, ha az adatbázis nem rendelkezik MEMORY_OPTIMIZED_DATA legalább egy tárolóval rendelkező fájlcsoporttal.
xtp_used 1 varchar(18) Az ellenőrzőpont-fájlok teljes mérete a ACTIVEKB-ban lévő állapotokkal UNDER CONSTRUCTIONés MERGE TARGETállapotokkal. Ez az érték a memóriaoptimalizált táblák adataihoz aktívan használt lemezterület. Akkor adja NULL vissza, ha az adatbázis nem rendelkezik MEMORY_OPTIMIZED_DATA legalább egy tárolóval rendelkező fájlcsoporttal.
xtp_pending_truncation 1 varchar(18) Állapotú WAITING_FOR_LOG_TRUNCATIONellenőrzőpontfájlok teljes mérete kb-ban. Ez az érték a napló csonkolását követően a törlésre váró ellenőrzőpont-fájlok lemezterülete. Akkor adja NULL vissza, ha az adatbázis nem rendelkezik MEMORY_OPTIMIZED_DATA legalább egy tárolóval rendelkező fájlcsoporttal.

1 Csak akkor tartalmazza, ha @include_total_xtp_storage értékre 1van állítva.

Megjegyzések

Az database_size érték általában nagyobb, mint a reservedunallocated space + naplófájlok mérete, és reservedunallocated_space csak az adatoldalakat veszi figyelembe. Előfordulhat, hogy az Azure Synapse Analytics esetében ez az állítás nem igaz.

Az XML-indexek és a teljes szöveges indexek által használt lapok mindkét eredményhalmazban index_size megtalálhatók. Ha @objname van megadva, a rendszer az objektum XML-indexeinek és teljes szöveges indexeinek lapjait is beleszámítja az összegbe reserved és index_size az eredményekbe.

Ha térbeli indexet tartalmazó adatbázisra vagy objektumra számítják ki a térbeli használatot, akkor a térméretű oszlopok( például database_sizea térbeli reservedindex mérete) index_sizetartalmazzák a térbeli index méretét.

Ha @updateusage van megadva, az SQL Server adatbázismotorja megvizsgálja az adatbázis adatlapjait, és minden szükséges javítást végrehajt az sys.allocation_units egyes táblák által használt tárhely és sys.partitions katalógusnézetek tekintetében. Vannak olyan helyzetek, például az index elvetése után, amikor a tábla helyadatai nem aktuálisak. @updateusage nagy táblákon vagy adatbázisokon való futtatás eltarthat egy ideig. Csak akkor használja @updateusage , ha gyanítja, hogy helytelen értékeket adnak vissza, és ha a folyamat nem befolyásolja hátrányosan az adatbázis többi felhasználóját vagy folyamatát. Tetszés szerint DBCC UPDATEUSAGE külön futtatható.

Megjegyzés:

Nagy indexek elvetése vagy újraépítése, illetve nagy táblák elvetése vagy csonkolása esetén az adatbázismotor a tényleges oldaleltéréseket és a hozzájuk tartozó zárolásokat a tranzakció véglegesítéséig hatástalanítja. A késleltetett dobási műveletek nem szabadítják fel azonnal a lefoglalt területet. Ezért előfordulhat, hogy egy nagy objektum elvetése vagy csonkolása után azonnal visszaadott sp_spaceused értékek nem tükrözik a tényleges rendelkezésre álló lemezterületet.

Engedélyek

A végrehajtásra sp_spaceused vonatkozó engedélyt a nyilvános szerepkör kapja meg. A @updateusage paramétert csak a db_owner rögzített adatbázis-szerepkör tagjai adhatja meg.

Példák

Egy. Lemezterület adatainak megjelenítése egy tábláról

Az alábbi példa a tábla és indexei Vendor lemezterület-adatait jelenti.

USE AdventureWorks2022;
GO

EXECUTE sp_spaceused N'Purchasing.Vendor';
GO

B. Adatbázis frissített helyadatainak megjelenítése

Az alábbi példa az aktuális adatbázisban használt területet foglalja össze, és a választható @updateusage paramétert használja az aktuális értékek visszaadásához.

USE AdventureWorks2022;
GO

EXECUTE sp_spaceused @updateusage = N'TRUE';
GO

C. Területhasználati információk megjelenítése a Stretch-kompatibilis táblához társított távoli tábláról

Az alábbi példa a Stretch-kompatibilis táblához társított távoli tábla által használt területet foglalja össze a távoli cél megadásához használt @mode argumentummal. További információ: Stretch Database.

USE StretchedAdventureWorks2022;
GO

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

D. Egy adatbázis helyhasználati adatainak megjelenítése egyetlen eredményhalmazban

Az alábbi példa egyetlen eredményhalmazban foglalja össze az aktuális adatbázis helyhasználatát.

USE AdventureWorks2022;
GO

EXECUTE sp_spaceused @oneresultset = 1;

E. Helyhasználati adatok megjelenítése egy olyan adatbázishoz, amely legalább egy MEMORY_OPTIMIZED fájlcsoportot tartalmaz egyetlen eredményhalmazban

Az alábbi példa az aktuális adatbázis helyhasználatát foglalja össze, és egyetlen eredményhalmazban legalább egy MEMORY_OPTIMIZED fájlcsoporttal rendelkezik.

USE WideWorldImporters;
GO

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

F. Egy MEMORY_OPTIMIZED táblaobjektum helyhasználati adatainak megjelenítése egy adatbázisban

Az alábbi példa az aktuális adatbázisban lévő, legalább egy MEMORY_OPTIMIZED fájlcsoporttal rendelkező táblaobjektum helyhasználatát MEMORY_OPTIMIZED foglalja össze.

USE WideWorldImporters;
GO

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