sp_spaceused (Transact-SQL)
Si applica a:SQL Server
Database SQL di
Azure Istanza
gestita di SQL di Azure Azure Synapse Analytics Platform
System (PDW)
Visualizza il numero di righe, spazio su disco riservato e spazio su disco utilizzato da una tabella, una vista indicizzata o una coda di Service Broker nel database corrente oppure visualizza lo spazio su disco riservato e usato dall'intero database.
Convenzioni di sintassi Transact-SQL
Sintassi
sp_spaceused [[ @objname = ] 'objname' ]
[, [ @updateusage = ] 'updateusage' ]
[, [ @mode = ] 'mode' ]
[, [ @oneresultset = ] oneresultset ]
[, [ @include_total_xtp_storage = ] include_total_xtp_storage ]
Nota
Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.
Argomenti
Per Azure Synapse Analytics and Analytics Platform System (PDW), sp_spaceused
è necessario specificare parametri denominati, ad esempio sp_spaceused (@objname= N'Table1');
anziché basarsi sulla posizione ordinale dei parametri.
[ @objname = ] 'objname'
Nome completo o non qualificato della tabella, della vista indicizzata o della coda per cui si desidera ottenere informazioni sull'utilizzo dello spazio. Le virgolette sono necessarie solo se viene specificato un nome di oggetto completo. Se viene specificato un nome di oggetto completo, ovvero contenente un nome di database, il nome del database deve essere quello del database corrente.
Se objname non viene specificato, i risultati vengono restituiti per l'intero database.
objname è nvarchar(776), con valore predefinito NULL.
Nota
Azure Synapse Analytics and Analytics Platform System (PDW) supporta solo oggetti di database e tabelle.
[ @updateusage = ] 'updateusage'
Indica che DBCC UPDATEUSAGE deve essere eseguito per aggiornare le informazioni sull'utilizzo dello spazio. Quando objname non viene specificato, l'istruzione viene eseguita nell'intero database; in caso contrario, l'istruzione viene eseguita su objname. I valori possono essere true o false. updateusage è varchar(5), con un valore predefinito false.
[ @mode = ] 'mode'
Indica l'ambito dei risultati. Per una tabella o un database esteso, il parametro mode consente di includere o escludere la parte remota dell'oggetto. Per ulteriori informazioni, vedere Stretch Database.
Importante
Stretch Database è deprecato in SQL Server 2022 (16.x). Questa funzionalità verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.
L'argomento mode può avere i valori seguenti:
Valore | Descrizione |
---|---|
ALL | Restituisce le statistiche di archiviazione dell'oggetto o del database, incluse sia la parte locale che la parte remota. |
LOCAL_ONLY | Restituisce le statistiche di archiviazione solo della parte locale dell'oggetto o del database. Se l'oggetto o il database non è abilitato per Stretch, restituisce le stesse statistiche di quando @mode = ALL. |
REMOTE_ONLY | Restituisce le statistiche di archiviazione solo della parte remota dell'oggetto o del database. Questa opzione genera un errore quando si verifica una delle condizioni seguenti: La tabella non è abilitata per Stretch. La tabella è abilitata per Stretch, ma non è mai stata abilitata la migrazione dei dati. In questo caso, la tabella remota non ha ancora uno schema. L'utente ha eliminato manualmente la tabella remota. Il provisioning dell'archivio dati remoto ha restituito lo stato Operazione riuscita, ma in realtà non è riuscito. |
mode è varchar(11), con valore predefinito N'ALL'.
[ @oneresultset = ] oneresultset
Indica se restituire un singolo set di risultati. L'argomento oneresultset può avere i valori seguenti:
Valore | Descrizione |
---|---|
0 | Quando @objname è null o non è specificato, vengono restituiti due set di risultati. Due set di risultati sono il comportamento predefinito. |
1 | Quando @objname = null o non viene specificato, viene restituito un singolo set di risultati. |
oneresultset è bit, con un valore predefinito pari a 0.
[ @include_total_xtp_storage] 'include_total_xtp_storage'
Si applica a: SQL Server 2017 (14.x), database SQL.
Quando @oneresultset=1, il parametro determina se il singolo set @include_total_xtp_storage di risultati include colonne per MEMORY_OPTIMIZED_DATA archiviazione. Il valore predefinito è 0, ovvero, per impostazione predefinita (se il parametro viene omesso) le colonne XTP non vengono incluse nel set di risultati.
Valori del codice restituito
0 (operazione completata) o 1 (operazione non riuscita)
Set di risultati
Se objname viene omesso e il valore di oneresultset è 0, vengono restituiti i set di risultati seguenti per fornire informazioni sulle dimensioni correnti del database.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
database_name | nvarchar(128) | Nome del database corrente. |
database_size | varchar(18) | Dimensioni del database corrente, espresse in megabyte. database_size include file di dati e di log. |
spazio non allocato | varchar(18) | Spazio nel database non riservato per i relativi oggetti. |
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
reserved | varchar(18) | Quantità totale di spazio allocato per gli oggetti del database. |
data | varchar(18) | Quantità totale di spazio utilizzato per i dati. |
index_size | varchar(18) | Quantità totale di spazio utilizzato per gli indici. |
Inutilizzati | varchar(18) | Quantità totale di spazio riservato per gli oggetti del database ma non ancora utilizzato. |
Se objname viene omesso e il valore di oneresultset è 1, viene restituito il set di risultati singolo seguente per fornire informazioni sulle dimensioni correnti del database.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
database_name | nvarchar(128) | Nome del database corrente. |
database_size | varchar(18) | Dimensioni del database corrente, espresse in megabyte. database_size include file di dati e di log. |
spazio non allocato | varchar(18) | Spazio nel database non riservato per i relativi oggetti. |
reserved | varchar(18) | Quantità totale di spazio allocato per gli oggetti del database. |
data | varchar(18) | Quantità totale di spazio utilizzato per i dati. |
index_size | varchar(18) | Quantità totale di spazio utilizzato per gli indici. |
Inutilizzati | varchar(18) | Quantità totale di spazio riservato per gli oggetti del database ma non ancora utilizzato. |
Se viene specificato objname , viene restituito il set di risultati seguente per l'oggetto specificato.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
name | nvarchar(128) | Nome dell'oggetto per cui sono state richieste informazioni sull'utilizzo dello spazio. Il nome dello schema dell'oggetto non viene restituito. Se il nome dello schema è obbligatorio, usare il sys.dm_db_partition_stats o sys.dm_db_index_physical_stats viste a gestione dinamica per ottenere informazioni sulle dimensioni equivalenti. |
rows | char(20) | Numero di righe esistenti nella tabella. Se l'oggetto specificato è una coda di Service Broker, questa colonna indica il numero di messaggi nella coda. |
reserved | varchar(18) | Quantità totale di spazio riservato per objname. |
data | varchar(18) | Quantità totale di spazio usata dai dati in objname. |
index_size | varchar(18) | Quantità totale di spazio usata dagli indici in objname. |
Inutilizzati | varchar(18) | Quantità totale di spazio riservata per objname ma non ancora usata. |
Questa è la modalità predefinita, quando non vengono specificati parametri. I set di risultati seguenti vengono restituiti dettagli sulle informazioni sulle dimensioni del database su disco.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
database_name | nvarchar(128) | Nome del database corrente. |
database_size | varchar(18) | Dimensioni del database corrente, espresse in megabyte. database_size include file di dati e di log. Se il database ha un filegroup MEMORY_OPTIMIZED_DATA, include le dimensioni totali su disco di tutti i file di checkpoint nel filegroup. |
spazio non allocato | varchar(18) | Spazio nel database non riservato per i relativi oggetti. Se il database ha un filegroup MEMORY_OPTIMIZED_DATA, include le dimensioni totali su disco dei file del checkpoint con stato PRECREATED nel filegroup. |
Spazio usato dalle tabelle nel database: (questo set di risultati non riflette le tabelle ottimizzate per la memoria, perché non esiste alcuna contabilità per tabella dell'utilizzo del disco)
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
reserved | varchar(18) | Quantità totale di spazio allocato per gli oggetti del database. |
data | varchar(18) | Quantità totale di spazio utilizzato per i dati. |
index_size | varchar(18) | Quantità totale di spazio utilizzato per gli indici. |
Inutilizzati | varchar(18) | Quantità totale di spazio riservato per gli oggetti del database ma non ancora utilizzato. |
Il set di risultati seguente viene restituito SOLO SE il database ha un filegroup MEMORY_OPTIMIZED_DATA con almeno un contenitore:
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
xtp_precreated | varchar(18) | Dimensioni totali dei file di checkpoint con stato PRECREATED, in KB. Conta per lo spazio non allocato nel database nel suo complesso. [Ad esempio, se sono presenti 600.000 KB di file di checkpoint creati in precedenza, questa colonna contiene '600000 KB'] |
xtp_used | varchar(18) | Dimensioni totali dei file di checkpoint con stati UNDER CONSTRUCTION, ACTIVE e MERGE TARGET, in KB. Si tratta dello spazio su disco usato attivamente per i dati nelle tabelle ottimizzate per la memoria. |
xtp_pending_truncation | varchar(18) | Dimensioni totali dei file di checkpoint con stato WAITING_FOR_LOG_TRUNCATION, in KB. Si tratta dello spazio su disco usato per i file di checkpoint in attesa della pulizia, una volta che si verifica il troncamento del log. |
Se objname viene omesso, il valore di oneresultset è 1 e include_total_xtp_storage è 1, viene restituito il set di risultati singolo seguente per fornire informazioni sulle dimensioni correnti del database. Se include_total_xtp_storage
è 0 (impostazione predefinita), le ultime tre colonne vengono omesse.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
database_name | nvarchar(128) | Nome del database corrente. |
database_size | varchar(18) | Dimensioni del database corrente, espresse in megabyte. database_size include file di dati e di log. Se il database ha un filegroup MEMORY_OPTIMIZED_DATA, include le dimensioni totali su disco di tutti i file di checkpoint nel filegroup. |
spazio non allocato | varchar(18) | Spazio nel database non riservato per i relativi oggetti. Se il database ha un filegroup MEMORY_OPTIMIZED_DATA, include le dimensioni totali su disco dei file del checkpoint con stato PRECREATED nel filegroup. |
reserved | varchar(18) | Quantità totale di spazio allocato per gli oggetti del database. |
data | varchar(18) | Quantità totale di spazio utilizzato per i dati. |
index_size | varchar(18) | Quantità totale di spazio utilizzato per gli indici. |
Inutilizzati | varchar(18) | Quantità totale di spazio riservato per gli oggetti del database ma non ancora utilizzato. |
xtp_precreated | varchar(18) | Dimensioni totali dei file di checkpoint con stato PRECREATED, in KB. Questo conteggio per lo spazio non allocato nel database nel suo complesso. Restituisce NULL se il database non dispone di un filegroup memory_optimized_data con almeno un contenitore. *Questa colonna è inclusa solo se @include_total_xtp_storage=1*. |
xtp_used | varchar(18) | Dimensioni totali dei file di checkpoint con stati UNDER CONSTRUCTION, ACTIVE e MERGE TARGET, in KB. Si tratta dello spazio su disco usato attivamente per i dati nelle tabelle ottimizzate per la memoria. Restituisce NULL se il database non dispone di un filegroup memory_optimized_data con almeno un contenitore. *Questa colonna è inclusa solo se @include_total_xtp_storage=1*. |
xtp_pending_truncation | varchar(18) | Dimensioni totali dei file di checkpoint con stato WAITING_FOR_LOG_TRUNCATION, in KB. Si tratta dello spazio su disco usato per i file di checkpoint in attesa della pulizia, una volta che si verifica il troncamento del log. Restituisce NULL se il database non dispone di un filegroup memory_optimized_data con almeno un contenitore. Questa colonna è inclusa solo se @include_total_xtp_storage=1 . |
Osservazioni:
database_size è in genere maggiore della somma di spazio riservato + non allocato perché include le dimensioni dei file di log, ma riservate e unallocated_space considerare solo le pagine di dati. In alcuni casi con Azure Synapse Analytics, questa istruzione potrebbe non essere vera.
Le pagine utilizzate dagli indici XML e dagli indici full-text sono incluse in index_size per entrambi i set di risultati. Quando si specifica objname , vengono conteggiate anche le pagine per gli indici XML e gli indici full-text per l'oggetto nei risultati totali riservati e index_size .
Se l'utilizzo dello spazio viene calcolato per un database o un oggetto con un indice spaziale, le colonne di dimensioni spazio, ad esempio database_size, riservate e index_size, includono le dimensioni dell'indice spaziale.
Quando si specifica updateusage , il motore di database di SQL Server analizza le pagine di dati nel database e apporta eventuali correzioni necessarie alle viste del catalogo sys.allocation_units e sys.partitions relative allo spazio di archiviazione usato da ogni tabella. In alcune situazioni, ad esempio dopo l'eliminazione di un indice, le informazioni sullo spazio restituite per la tabella non sono aggiornate. updateusage può richiedere del tempo per l'esecuzione in tabelle o database di grandi dimensioni. Usare updateusage solo quando si sospetta che vengano restituiti valori non corretti e quando il processo non avrà un effetto negativo su altri utenti o processi nel database. Se lo si preferisce, è possibile eseguire l'istruzione DBCC UPDATEUSAGE separatamente.
Nota
Quando si eliminano o ricompilano indici di grandi dimensioni o si eliminano o si troncano tabelle di grandi dimensioni, il motore di database rinvia le deallozioni di pagina effettive e i relativi blocchi associati fino a quando non viene eseguito il commit della transazione. Le operazioni di eliminazione posticipate non rendono immediatamente disponibile lo spazio allocato. Pertanto, i valori restituiti da sp_spaceused immediatamente dopo l'eliminazione o il troncamento di un oggetto di grandi dimensioni potrebbero non riflettere lo spazio su disco effettivo disponibile.
Autorizzazioni
L'autorizzazione per eseguire sp_spaceused è concessa al ruolo public . Solo tramite i membri del ruolo predefinito del database db_owner può essere specificato il parametro @updateusage .
Esempi
R. Visualizzazione di informazioni relative allo spazio su disco per una tabella
Nell'esempio seguente vengono visualizzate informazioni relative allo spazio su disco per la tabella Vendor
e i relativi indici.
USE AdventureWorks2022;
GO
EXEC sp_spaceused N'Purchasing.Vendor';
GO
B. Visualizzazione di informazioni sullo spazio aggiornate per un database
Nell'esempio seguente viene riepilogato lo spazio utilizzato nel database corrente e viene utilizzato il parametro facoltativo @updateusage
per garantire la restituzione di valori aggiornati.
USE AdventureWorks2022;
GO
EXEC sp_spaceused @updateusage = N'TRUE';
GO
C. Visualizzazione delle informazioni sull'utilizzo dello spazio sulla tabella remota associata a una tabella abilitata per l'estensione
Nell'esempio seguente viene riepilogato lo spazio utilizzato dalla tabella remota associata a una tabella abilitata per l'estensione usando l'argomento @mode per specificare la destinazione remota. Per ulteriori informazioni, vedere Stretch Database.
USE StretchedAdventureWorks2022
GO
EXEC sp_spaceused N'Purchasing.Vendor', @mode = 'REMOTE_ONLY'
D. Visualizzazione delle informazioni sull'utilizzo dello spazio per un database in un singolo set di risultati
Nell'esempio seguente viene riepilogato l'utilizzo dello spazio per il database corrente in un singolo set di risultati.
USE AdventureWorks2022
GO
EXEC sp_spaceused @oneresultset = 1
E. Visualizzazione delle informazioni sull'utilizzo dello spazio per un database con almeno un MEMORY_OPTIMIZED file group in un singolo set di risultati
Nell'esempio seguente viene riepilogato l'utilizzo dello spazio per il database corrente con almeno un MEMORY_OPTIMIZED filegroup in un singolo set di risultati.
USE WideWorldImporters
GO
EXEC sp_spaceused @updateusage = 'FALSE', @mode = 'ALL', @oneresultset = '1', @include_total_xtp_storage = '1';
GO
F. Visualizzazione delle informazioni sull'utilizzo dello spazio per un oggetto tabella MEMORY_OPTIMIZED in un database.
Nell'esempio seguente viene riepilogato l'utilizzo dello spazio per un oggetto tabella MEMORY_OPTIMIZED nel database corrente con almeno un MEMORY_OPTIMIZED file group.
USE WideWorldImporters
GO
EXEC sp_spaceused
@objname = N'VehicleTemparatures',
@updateusage = 'FALSE',
@mode = 'ALL',
@oneresultset = '0',
@include_total_xtp_storage = '1';
GO
Vedi anche
CREATE INDEX (Transact-SQL)
CREATE TABLE (Transact-SQL)
DBCC UPDATEUSAGE (Transact-SQL)
SQL Server Service Broker
sys.allocation_units (Transact-SQL)
sys.indexes (Transact-SQL)
sys.index_columns (Transact-SQL)
sys.objects (Transact-SQL)
sys.partitions (Transact-SQL)
Stored procedure di sistema (Transact-SQL)