sp_spaceused (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

La sp_spaceused procédure stockée système affiche les éléments suivants :

  • nombre de lignes, d’espace disque réservé et d’espace disque utilisé par une table, une vue indexée ou une file d’attente Service Broker dans la base de données active

  • l’espace disque réservé et utilisé par l’ensemble de la base de données

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_spaceused
    [ [ @objname = ] N'objname' ]
    [ , [ @updateusage = ] 'updateusage' ]
    [ , [ @mode = ] 'mode' ]
    [ , [ @oneresultset = ] oneresultset ]
    [ , [ @include_total_xtp_storage = ] include_total_xtp_storage ]
[ ; ]

Notes

Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.

Arguments

Pour Azure Synapse Analytics and Analytics Platform System (PDW), doit spécifier des paramètres nommés (par exemplesp_spaceused (@objname= N'Table1');), sp_spaceused plutôt que de compter sur la position ordinale des paramètres.

[ @objname = ] N’objname'

Nom qualifié ou non qualifié de la table, de la vue indexée ou de la file d’attente pour laquelle les informations d’utilisation de l’espace sont demandées. @objname est nvarchar(776), avec la valeur par défaut NULL. 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 @objname n’est pas spécifié, les résultats sont retournés pour l’ensemble de la base de données.

Remarque

Azure Synapse Analytics and Analytics Platform System (PDW) prend uniquement en charge les objets de base de données et de table.

[ @updateusage = ] 'updateusage'

Indique qu’il DBCC UPDATEUSAGE doit être exécuté pour mettre à jour les informations d’utilisation de l’espace. @updateusage est varchar(5), avec la valeur par défaut false. Quand @objname n’est pas spécifié, l’instruction est exécutée sur l’ensemble de la base de données. Sinon, l’instruction est exécutée sur @objname. Les valeurs peuvent être true ou false.

[ @mode = ] 'mode'

Indique l’étendue des résultats. Pour une table ou une base de données étirée, le paramètre @mode vous permet d’inclure ou d’exclure la partie distante de l’objet. Pour plus d'informations, consultez Stretch Database.

Important

Stretch Database est déprécié dans SQL Server 2022 (16.x) et Azure SQL Database. Cette fonctionnalité sera supprimée dans une version future de moteur de base de données. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.

@mode est varchar(11) et peut être l’une de ces valeurs.

Valeur Description
ALL (valeur par défaut) Retourne les statistiques de stockage de l’objet ou de la base de données, y compris la partie locale et la partie distante.
LOCAL_ONLY Retourne les statistiques de stockage de la partie locale de l’objet ou de la base de données. Si l’objet ou la base de données n’est pas activé pour Stretch, retourne les mêmes statistiques que lorsque @mode est ALL.
REMOTE_ONLY Retourne les statistiques de stockage de la partie distante de l’objet ou de la base de données. Cette option génère une erreur lorsque l’une des conditions suivantes est remplie :

La table n’est pas activée pour Stretch.

La table est activée pour Stretch, mais vous n’avez jamais activé la migration des données. Dans ce cas, la table distante n’a pas encore de schéma.

L’utilisateur a supprimé manuellement la table distante.

L’approvisionnement de l’archive de données distantes a retourné un état De réussite, mais en fait, il a échoué.

[ @oneresultset = ] oneresultset

Indique s’il faut retourner un jeu de résultats unique. @oneresultset est bit et peut être l’une des valeurs suivantes :

Valeur Description
0 (valeur par défaut) Lorsque @objname est null ou n’est pas spécifié, deux jeux de résultats sont retournés.
1 Lorsque @objname est ou n’est NULL pas spécifié, un jeu de résultats unique est retourné.

[ @include_total_xtp_storage = ] include_total_xtp_storage

S’applique à : SQL Server 2017 (14.x) et versions ultérieures, et SQL Database

Lorsque @oneresultset est défini 1sur , ce paramètre détermine si le jeu de résultats unique inclut des colonnes pour MEMORY_OPTIMIZED_DATA le stockage. @include_total_xtp_storage est bit, avec la valeur par défaut 0. Si 1, les colonnes XTP sont incluses dans le jeu de résultats.

Valeurs des codes de retour

0 (réussite) ou 1 (échec).

Jeu de résultats

Si @objname est omis et que la valeur de @oneresultset est 0, les jeux de résultats suivants sont retournés pour fournir des informations de taille de base de données actuelles.

Nom de la 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 à la fois les données et les fichiers journaux.
unallocated space varchar(18) Espace dans la base de données qui n’est pas réservé aux objets de base de données.
Nom de la 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 omise et que la valeur de @oneresultset est 1, le jeu de résultats unique suivant est retourné pour fournir des informations de taille de base de données actuelles.

Nom de la 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 à la fois les données et les fichiers journaux.
unallocated space varchar(18) Espace dans la base de données qui n’est pas réservé aux objets de base de données.
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 retourné pour l’objet spécifié.

Nom de la 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 du schéma de l’objet n’est pas retourné. Si le nom du schéma est requis, utilisez le sys.dm_db_partition_stats ou sys.dm_db_index_physical_stats vues de gestion dynamique pour obtenir des informations de taille équivalentes.
rows char(20) 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 dans la file d’attente.
reserved varchar(18) Quantité totale d’espace réservé pour @objname.
data varchar(18) Quantité totale d’espace utilisé par les données dans @objname.
index_size varchar(18) Quantité totale d’espace utilisé par les index dans @objname.
unused varchar(18) Quantité totale d’espace réservé pour @objname mais pas encore utilisée.

Ce mode est la valeur par défaut, lorsqu’aucun paramètre n’est spécifié. Les jeux de résultats suivants sont retournés en détail des informations de taille de base de données sur disque.

Nom de la 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 à la fois les données et les fichiers journaux. Si la base de données a un MEMORY_OPTIMIZED_DATA groupe de fichiers, cette valeur inclut la taille totale sur disque de tous les fichiers case activée point dans le groupe de fichiers.
unallocated space varchar(18) Espace dans la base de données qui n’est pas réservé aux objets de base de données. Si la base de données a un MEMORY_OPTIMIZED_DATA groupe de fichiers, cette valeur inclut la taille totale sur disque des fichiers case activée point avec un état PRECREATED dans le groupe de fichiers.

Espace utilisé par les tables de la base de données. Ce jeu de résultats ne reflète pas les tables optimisées en mémoire, car il n’existe aucune comptabilité par table de l’utilisation du disque :

Nom de la 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é.

Le jeu de résultats suivant est retourné uniquement si la base de données a un MEMORY_OPTIMIZED_DATA groupe de fichiers avec au moins un conteneur :

Nom de la colonne Type de données Description
xtp_precreated varchar(18) Taille totale des fichiers case activée point avec l’état PRECREATED, dans Ko. Compte vers l’espace non alloué dans la base de données dans son ensemble. Par exemple, s’il y a 600 000 Ko de fichiers case activée point précréés, cette colonne contient 600000 KB.
xtp_used varchar(18) Taille totale des fichiers case activée point avec des états UNDER CONSTRUCTION, ACTIVEet MERGE TARGET, dans Ko. Cette valeur est l’espace disque activement utilisé pour les données dans les tables mémoire optimisées.
xtp_pending_truncation varchar(18) Taille totale des fichiers case activée point avec l’état WAITING_FOR_LOG_TRUNCATION, dans Ko. Cette valeur est l’espace disque utilisé pour les fichiers case activée point qui attendent propre up, une fois la troncation du journal effectuée.

Si @objname est omis, la valeur de @oneresultset est 1, et @include_total_xtp_storage est 1, le jeu de résultats unique suivant est retourné pour fournir les informations de taille de base de données actuelles. Si @include_total_xtp_storage est 0 (valeur par défaut), les trois dernières colonnes sont omises.

Nom de la 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 à la fois les données et les fichiers journaux. Si la base de données a un MEMORY_OPTIMIZED_DATA groupe de fichiers, cette valeur inclut la taille totale sur disque de tous les fichiers case activée point dans le groupe de fichiers.
unallocated space varchar(18) Espace dans la base de données qui n’est pas réservé aux objets de base de données. Si la base de données a un MEMORY_OPTIMIZED_DATA groupe de fichiers, cette valeur inclut la taille totale sur disque des fichiers case activée point avec un état PRECREATED dans le groupe de fichiers.
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é.
xtp_precreated1 varchar(18) Taille totale des fichiers case activée point avec l’état PRECREATED, dans Ko. Cette valeur compte vers l’espace non alloué dans la base de données dans son ensemble. Retourne NULL si la base de données n’a pas de MEMORY_OPTIMIZED_DATA groupe de fichiers avec au moins un conteneur.
xtp_used1 varchar(18) Taille totale des fichiers case activée point avec des états UNDER CONSTRUCTION, ACTIVEet MERGE TARGET, dans Ko. Cette valeur est l’espace disque activement utilisé pour les données dans les tables mémoire optimisées. Retourne NULL si la base de données n’a pas de MEMORY_OPTIMIZED_DATA groupe de fichiers avec au moins un conteneur.
xtp_pending_truncation1 varchar(18) Taille totale des fichiers case activée point avec l’état WAITING_FOR_LOG_TRUNCATION, dans Ko. Cette valeur est l’espace disque utilisé pour les fichiers case activée point qui attendent propre up, une fois la troncation du journal effectuée. Retourne NULL si la base de données n’a pas de MEMORY_OPTIMIZED_DATA groupe de fichiers avec au moins un conteneur.

1 Inclus uniquement si @include_total_xtp_storage est défini sur 1.

Notes

La database_size valeur est généralement supérieure à la somme du reserved + unallocated space fait qu’elle inclut la taille des fichiers journaux, mais reserved elle unallocated_space ne prend en compte que les pages de données. Dans certains cas avec Azure Synapse Analytics, cette instruction peut ne pas être vraie.

Les pages utilisées par les index XML et les index de recherche en texte intégral sont incluses dans index_size les deux jeux de résultats. Lorsque @objname est spécifié, les pages des index XML et des index de recherche en texte intégral pour l’objet sont également comptabilisées dans le total reserved et index_size les résultats.

Si l’utilisation de l’espace est calculée pour une base de données ou un objet qui est un index spatial, les colonnes de taille d’espace, telles que database_size, reservedet index_size, incluent la taille de l’index spatial.

Lorsque @updateusage est spécifié, sql Server Moteur de base de données analyse les pages de données de la base de données et apporte toutes les corrections requises aux vues du catalogue et sys.partitions de l’espace sys.allocation_units de stockage utilisé par chaque table. Il existe certaines situations, par exemple, une fois qu’un index est supprimé, lorsque les informations d’espace de la table peuvent ne pas être actuelles. @updateusage peut prendre un certain temps pour s’exécuter sur des tables ou des bases de données volumineuses. Utilisez @updateusage uniquement lorsque vous soupçonnez que des valeurs incorrectes sont retournées et lorsque le processus n’a pas d’effet négatif sur d’autres utilisateurs ou processus de la base de données. Si vous le préférez, DBCC UPDATEUSAGE vous pouvez l’exécuter séparément.

Remarque

Lorsque vous supprimez ou reconstruisez des index volumineux ou lorsque vous supprimez ou tronquez des tables volumineuses, le moteur de base de données diffère les désallocations des pages actives et de leurs blocs associés jusqu’à ce que la transaction soit validée. Les opérations de suppression différées ne libèrent pas immédiatement l’espace alloué. Par conséquent, les valeurs retournées sp_spaceused immédiatement après la suppression ou la troncation d’un objet volumineux peuvent ne pas refléter l’espace disque réel disponible.

Autorisations

L’autorisation d’exécution 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

R. Afficher des informations sur l’espace disque sur une table

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

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

B. Afficher les informations d’espace mises à jour sur une base de données

L’exemple suivant récapitule l’espace utilisé dans la base de données active et utilise le paramètre facultatif @updateusage pour vous assurer que les valeurs actuelles sont retournées.

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

C. Afficher les informations d’utilisation de l’espace sur la table distante associée à une table stretch

L’exemple suivant récapitule l’espace utilisé par la table distante associée à une table Stretch à l’aide de l’argument @mode pour spécifier la cible distante. Pour plus d'informations, consultez Stretch Database.

USE StretchedAdventureWorks2022;
GO

EXEC sp_spaceused N'Purchasing.Vendor', @mode = 'REMOTE_ONLY';

D. Afficher les informations d’utilisation de l’espace pour une base de données dans un jeu de résultats unique

L’exemple suivant récapitule l’utilisation de l’espace pour la base de données active dans un jeu de résultats unique.

USE AdventureWorks2022;
GO
EXEC sp_spaceused @oneresultset = 1;

E. Afficher les informations d’utilisation de l’espace pour une base de données avec au moins un groupe de fichiers MEMORY_OPTIMIZED dans un jeu de résultats unique

L’exemple suivant récapitule l’utilisation de l’espace pour la base de données active avec au moins un MEMORY_OPTIMIZED groupe de fichiers dans un jeu de résultats unique.

USE WideWorldImporters
GO

EXEC sp_spaceused @updateusage = 'FALSE',
    @mode = 'ALL',
    @oneresultset = '1',
    @include_total_xtp_storage = '1';
GO

F. Afficher les informations d’utilisation de l’espace pour un objet table MEMORY_OPTIMIZED dans une base de données

L’exemple suivant récapitule l’utilisation de l’espace pour un MEMORY_OPTIMIZED objet table dans la base de données active avec au moins un MEMORY_OPTIMIZED groupe de fichiers.

USE WideWorldImporters
GO

EXEC sp_spaceused @objname = N'VehicleTemparatures',
    @updateusage = 'FALSE',
    @mode = 'ALL',
    @oneresultset = '0',
    @include_total_xtp_storage = '1';
GO