sp_spaceused (Transact-SQL)
Si applica a: SQL Server (tutte le versioni supportate)
database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
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.
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)