sp_spaceused (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics 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 1
sur , 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) or 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 de point de contrôle 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 de point de contrôle avec l’é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 de point de contrôle avec état PRECREATED , en Ko. Compte vers l’espace non alloué dans la base de données dans son ensemble. Par exemple, s’il existe 600 000 Ko de fichiers de point de contrôle précréés, cette colonne contient 600000 KB . |
xtp_used |
varchar(18) | Taille totale des fichiers de point de contrôle avec des états UNDER CONSTRUCTION , ACTIVE et MERGE TARGET , en 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 de point de contrôle avec état WAITING_FOR_LOG_TRUNCATION , en Ko. Cette valeur est l’espace disque utilisé pour les fichiers de point de contrôle qui attendent le nettoyage, 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 de point de contrôle 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 de point de contrôle avec l’é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_precreated 1 |
varchar(18) | Taille totale des fichiers de point de contrôle avec état PRECREATED , en 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_used 1 |
varchar(18) | Taille totale des fichiers de point de contrôle avec des états UNDER CONSTRUCTION , ACTIVE et MERGE TARGET , en 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_truncation 1 |
varchar(18) | Taille totale des fichiers de point de contrôle avec état WAITING_FOR_LOG_TRUNCATION , en Ko. Cette valeur est l’espace disque utilisé pour les fichiers de point de contrôle qui attendent le nettoyage, 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
, reserved
et 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'VehicleTemperatures',
@updateusage = 'FALSE',
@mode = 'ALL',
@oneresultset = '0',
@include_total_xtp_storage = '1';
GO