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 Service Broker de la base de données active, ou affiche l'espace disque réservé et utilisé par l'ensemble de la base de données.
S'applique à : SQL Server (SQL Server 2008 via la version actuelle). |
Conventions de la syntaxe 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. Les valeurs peuvent être true ou false. updateusage est de type varchar(5), avec false comme valeur par défaut.
Valeurs des codes de retour
0 (succès) ou 1 (échec)
Jeux 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 de la base de données actuelle en mégaoctets. 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é, le jeu 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 requis, utilisez les vues de gestion dynamique sys.dm_db_partition_stats ou sys.dm_db_index_physical_stats pour obtenir des 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. |
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.
Si l'utilisation de l'espace est calculée pour une base de données ou un objet qui possède un index spatial, les colonnes de taille d'espace, telles que database_size, reserved et index_size, incluent la taille de l'index spatial.
Lorsque updateusage est spécifié, le moteur de base de données SQL Server 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 d'espace de la table peuvent ne plus être à jour. updateusage peut prendre du temps pour s'exécuter sur de grandes tables ou bases de données. 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.
Notes
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.
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.
Exemples
A.Affichage d'informations sur l'espace disque occupé par une table
L'exemple qui suit donne des informations sur l'espace disque pour la table Vendor et ses index.
USE AdventureWorks2012;
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 suivant récapitule l'espace utilisé dans la base de données actuelle et utilise le paramètre facultatif @updateusage pour forcer le retour de valeurs actualisées.
USE AdventureWorks008R2;
GO
EXEC sp_spaceused @updateusage = N'TRUE';
GO
Voir aussi
Référence
DBCC UPDATEUSAGE (Transact-SQL)
sys.allocation_units (Transact-SQL)
sys.index_columns (Transact-SQL)
Procédures stockées système (Transact-SQL)