sp_spaceused (Transact-SQL)

Affiche le nombre de lignes, l'espace disque réservé et l'espace disque utilisé par une table, une vue indexée ou une file d'attente SQL Server 2005 Service Broker de la base de données actuelle, ou affiche l'espace disque réservé et utilisé par l'ensemble de la base de données.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

sp_spaceused [[ @objname = ] 'objname' ] 
[,[ @updateusage = ] 'updateusage' ]

Arguments

[ @objname=] 'objname'

Nom qualifié ou non qualifié de la table, de la vue indexée ou de la file d'attente pour laquelle des informations d'utilisation d'espace sont demandées. Les guillemets ne sont nécessaires que si un nom d'objet qualifié est spécifié. Si un nom d'objet complet (incluant un nom de base de données) est fourni, le nom de la base de données doit être celui de la base de données actuelle.

Si l'argument objname n'est pas spécifié, les résultats sont renvoyés pour l'ensemble de la base de données.

objname est de type nvarchar(776), avec NULL comme valeur par défaut.

[ @updateusage=] 'updateusage'

Indique que DBCC UPDATEUSAGE doit être exécuté pour mettre à jour les informations d'utilisation de l'espace. Si l'argument objname n'est pas spécifié, l'instruction est exécutée sur l'ensemble de la base de données ; sinon, elle est exécutée sur objname. Ce paramètre peut prendre les valeurs true ou false. updateusage est de type varchar(5), avec la valeur par défaut false.

Notes

database_size est toujours supérieur à la somme de reserved + unallocated space parce qu'il comprend également la taille des fichiers journaux, mais reserved et unallocated_space ne tiennent compte que des pages de données.

Les pages utilisées par les index XML et les index de texte intégral sont incluses dans index_size pour les deux ensembles de résultats. Si objname est spécifié, les pages des index XML et de texte intégral pour cet objet sont également comptées dans le résultat total de reserved et de index_size.

Lorsque updateusage est spécifié, Moteur de base de données SQL Server 2005 analyse les pages de données de la base de données et apporte les corrections nécessaires aux affichages catalogues sys.allocation_units et sys.partitions en ce qui concerne l'espace de stockage utilisé par chacune des tables. Il existe des cas, par exemple après la suppression d'un index, où les informations de la table ne sont plus à jour. updateusage peut mettre du temps à s'exécuter sur les tables ou les bases de données volumineuses. Faites appel à updateusage uniquement lorsque vous suspectez que des valeurs incorrectes sont renvoyées et lorsque le processus ne peut gêner ni les autres utilisateurs ni les autres processus de la base de données. Il est également possible d'exécuter DBCC UPDATEUSAGE séparément.

ms188776.note(fr-fr,SQL.90).gifRemarque :
Lorsque vous supprimez ou que vous recréez des index volumineux, ou quand vous supprimez ou que vous tronquez de grandes tables, le Moteur de base de données diffère les désallocations de pages réelles ainsi que les verrous associés jusqu'après la validation de la transaction. Les opérations de suppression différées ne libèrent pas immédiatement l'espace alloué. C'est pourquoi les valeurs renvoyées par sp_spaceused immédiatement après la suppression ou la troncature d'un objet volumineux ne reflètent pas toujours l'espace disque réellement disponible. Pour plus d'informations sur les allocations différées, consultez Suppression et reconstruction d'objets volumineux.

Autorisations

L'autorisation d'exécuter sp_spaceused est accordée au rôle public. Seuls les membres du rôle de base de données fixe db_owner peuvent spécifier la paramètre @updateusage.

Valeurs des codes renvoyées

0 (succès) ou 1 (échec)

Ensembles de résultats

Si objname est omis, les ensembles de résultats suivants sont renvoyés pour fournir les informations sur la taille de la base de données active.

Nom de colonne Type de données Description

database_name

nvarchar(128)

Nom de la base de données en cours.

database_size

varchar(18)

Taille en mégaoctets de la base de données actuelle. database_size inclut les fichiers de données et les fichiers journaux.

unallocated space

varchar(18)

Espace de la base de données qui n'a pas été réservé pour des objets de base de données.

Nom de colonne Type de données Description

reserved

varchar(18)

Quantité totale d'espace allouée par les objets dans la base de données.

data

varchar(18)

Quantité totale d'espace qu'occupent les données.

index_size

varchar(18)

Quantité totale d'espace qu'occupent les index.

unused

varchar(18)

Quantité totale d'espace réservée pour les objets dans la base de données, mais non encore utilisé.

Si objname est spécifié, l'ensemble de résultats suivant est renvoyé pour l'objet spécifié.

Nom de colonne Type de données Description

name

nvarchar(128)

Nom de l'objet pour lequel ont été demandées les informations relatives à l'utilisation de l'espace.

Le nom de schéma de l'objet n'est pas renvoyé. Si le nom de schéma est nécessaire, utilisez les vues de gestion dynamique sys.dm_db_partition_stats ou sys.dm_db_index_physical_stats pour obtenir les informations de taille équivalentes.

rows

char(11)

Nombre de lignes existant dans la table. Si l'objet spécifié est une file d'attente Service Broker , cette colonne indique le nombre de messages en file d'attente.

reserved

varchar(18)

Quantité totale d'espace réservé pour objname.

data

varchar(18)

Quantité totale d'espace qu'occupent les données dans objname.

index_size

varchar(18)

Quantité totale d'espace qu'occupent les index dans objname.

unused

varchar(18)

Quantité totale d'espace réservé, mais pas encore utilisé, pour objname.

Exemples

A. Affichage d'informations sur l'espace occupé par une table

L'exemple qui suit donne des informations sur l'espace disque pour la table Vendor et ses index.

USE AdventureWorks;
GO
EXEC sp_spaceused N'Purchasing.Vendor';
GO

B. Affichage d'informations mises à jour sur l'espace occupé par une base de données

L'exemple qui suit récapitule l'espace utilisé dans la base de données actuelle et utilise le paramètre facultatif @updateusage pour forcer le renvoi de valeurs actualisées.

USE AdventureWorks;
GO
EXEC sp_spaceused @updateusage = N'TRUE';
GO

Voir aussi

Référence

CREATE INDEX (Transact-SQL)
CREATE TABLE (Transact-SQL)
DBCC UPDATEUSAGE (Transact-SQL)
sys.allocation_units (Transact-SQL)
sys.indexes (Transact-SQL)
sys.index_columns (Transact-SQL)
sys.objects (Transact-SQL)
sys.partitions (Transact-SQL)
Procédures stockées système (Transact-SQL)

Autres ressources

Service Broker

Aide et Informations

Assistance sur SQL Server 2005