sp_spaceused (Transact-SQL)

Si applica a: sìSQL Server (tutte le versioni supportate) Sìdatabase SQL di Azure SìIstanza gestita di SQL di Azure sìAzure Synapse Analytics sìParallel Data Warehouse

Visualizza il numero di righe, lo spazio su disco riservato e lo spazio su disco utilizzato per una tabella, una vista indicizzata o una coda di Broker di servizio nel database corrente oppure visualizza lo spazio su disco riservato e utilizzato dall'intero database.

Icona di collegamento a un argomento Convenzioni della 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 e , deve specificare parametri denominati, ad esempio anziché basarsi Azure Synapse Analytics Piattaforma di strumenti analitici (PDW) sulla posizione sp_spaceused sp_spaceused (@objname= N'Table1'); 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, vengono restituiti risultati per l'intero database.
objname è di tipo nvarchar(776) e il valore predefinito è NULL.

Nota

Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW) supportano solo oggetti di database e di tabella.

[ @updateusage = ] 'updateusage' Indica che è necessario eseguire DBCC UPDATEUSAGE per aggiornare le informazioni sull'utilizzo dello spazio. Se objname non è specificato, l'istruzione viene eseguita nell'intero database. In caso contrario, l'istruzione viene eseguita in objname. I valori possono essere true o false. updateusage è varchar(5), con il valore predefinito false.

[ @mode = ] 'mode' Indica l'ambito dei risultati. Per una tabella o un database con estensione, il parametro mode consente di includere o escludere la parte remota dell'oggetto. Per ulteriori informazioni, vedere Stretch Database.

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 l'estensione, 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 dispone ancora di 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 il 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. Il comportamento predefinito è due set di risultati.
1 Se @ objname = null o non è specificato, viene restituito un singolo set di risultati.

oneresultset è di tipo bit e il valore predefinito è 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 di risultati @include_total_xtp_storage 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 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
Riservati 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 singolo set di risultati 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 file di dati e di log.
spazio non allocato varchar(18) Spazio nel database non riservato per i relativi oggetti.
Riservati 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 specificato, viene restituito il set di risultati seguente per l'oggetto specificato.

Nome colonna Tipo di dati Descrizione
nome 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, utilizzare il sys.dm_db_partition_stats o sys.dm_db_index_physical_stats viste a gestione dinamica per ottenere informazioni equivalenti sulle dimensioni.
rows char(20) Numero di righe esistenti nella tabella. Se l'oggetto specificato è una coda di Broker di servizio, in questa colonna viene indicato il numero di messaggi presenti nella coda.
Riservati 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 riservato per objname ma non ancora usato.

Si tratta della modalità predefinita, quando non viene specificato alcun parametro. I set di risultati seguenti vengono restituiti con informazioni dettagliate 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 file di dati e di log. Se il database include un filegroup MEMORY_OPTIMIZED_DATA, include le dimensioni totali su disco di tutti i file del checkpoint nel filegroup.
spazio non allocato varchar(18) Spazio nel database non riservato per i relativi oggetti. Se il database include 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 un accounting per tabella dell'utilizzo del disco)

Nome colonna Tipo di dati Descrizione
Riservati 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 del 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 precreati, questa colonna contiene "600000 KB"]
xtp_used varchar(18) Dimensioni totali dei file del 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 del checkpoint con stato WAITING_FOR_LOG_TRUNCATION, in KB. Si tratta dello spazio su disco usato per i file del checkpoint in attesa della pulizia, dopo il troncamento del log.

Se objname viene omesso, il valore di oneresultset è 1 e include_total_xtp_storage è 1, viene restituito il singolo set di risultati 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 file di dati e di log. Se il database include un filegroup MEMORY_OPTIMIZED_DATA, include le dimensioni totali su disco di tutti i file del 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.
Riservati 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 del checkpoint con stato PRECREATED, in KB. Viene conteggiato 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 viene 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 viene inclusa solo se @include_total_xtp_storage =1.
xtp_pending_truncation varchar(18) Dimensioni totali dei file del checkpoint con stato WAITING_FOR_LOG_TRUNCATION, in KB. Si tratta dello spazio su disco usato per i file del checkpoint in attesa della pulizia, dopo il troncamento del log. Restituisce NULL se il database non dispone di un filegroup memory_optimized_data con almeno un contenitore. Questa colonna viene inclusa solo se @include_total_xtp_storage=1 .

Commenti

database_size è in genere maggiore della somma dello spazio riservato non allocato perché include le dimensioni dei file di log, ma riservato e unallocated_space prendere in considerazione solo le + pagine di dati. In alcuni casi con Azure Synapse Analytics, questa istruzione potrebbe non essere vera.

Le pagine usate dagli indici XML e dagli indici full-text sono incluse in index_size per entrambi i set di risultati. Quando objname viene specificato, anche le pagine per gli indici XML e gli indici full-text per l'oggetto vengono conteggiate nei risultati totali riservati index_size ricerca.

Se l'utilizzo dello spazio viene calcolato per un database o un oggetto con un indice spaziale, le colonne di dimensioni dello spazio, ad esempio database_size, reserved e index_size, includono le dimensioni dell'indice spaziale.

Quando si specifica updateusage, analizza le pagine di dati nel database e apporta le correzioni necessarie alle viste del catalogo sys.allocation_units e Motore di database di SQL Server 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. l'aggiornamento 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

In caso di eliminazione o ricompilazione di indici di grandi dimensioni oppure di eliminazione o troncamento di tabelle di grandi dimensioni, in Motore di database le deallocazioni di pagine effettive e i relativi blocchi associati vengono posticipati fino all'esecuzione del 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 i membri del ruolo predefinito del database db_owner possono specificare 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 AdventureWorks2012;  
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 AdventureWorks008R2;  
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 StretchedAdventureWorks2016  
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 AdventureWorks2016  
GO  
EXEC sp_spaceused @oneresultset = 1  

E. Visualizzazione delle informazioni sull'utilizzo dello spazio per un database con almeno 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 MEMORY_OPTIMIZED file group 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 MEMORY_OPTIMIZED oggetto tabella in un database.

Nell'esempio seguente viene riepilogato l'utilizzo dello spazio per un oggetto MEMORY_OPTIMIZED tabella nel database corrente con almeno 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

Vedere 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)