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 actuelle, ou affiche l'espace disque réservé et utilisé par l'ensemble de la base de données.

Icône Lien de rubrique 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.

[!REMARQUE]

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

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)

Concepts

SQL Server Service Broker