DBCC UPDATEUSAGE (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance
Indique et corrige le nombre de pages et de lignes inexact dans les vues de catalogue. En raison de ces inexactitudes, la procédure stockée système sp_spaceused
peut retourner des rapports incorrects sur l’utilisation de l’espace.
Conventions de la syntaxe Transact-SQL
Syntaxe
DBCC UPDATEUSAGE
( { database_name | database_id | 0 }
[ , { table_name | table_id | view_name | view_id }
[ , { index_name | index_id } ] ]
) [ WITH [ NO_INFOMSGS ] [ , ] [ COUNT_ROWS ] ]
Arguments
database_name | database_id | 0
Nom ou identificateur de la base de données pour laquelle les statistiques d’utilisation de l’espace doivent être indiquées et corrigées. Si 0 est spécifié, la base de données active est utilisée. Les noms de base de données doivent suivre les règles applicables aux identificateurs.
table_name | table_id | view_name | view_id
Nom ou identificateur de la table ou de la vue indexée dont les statistiques d’utilisation de l’espace doivent être indiquées et corrigées. Les noms des tables et des vues doivent suivre les règles applicables aux identificateurs.
index_id | index_name
Identificateur ou nom de l’index à utiliser. Si aucun index n'est spécifié, l'instruction traite tous les index pour la table ou la vue indiquée.
WITH
Permet d'indiquer des options.
NO_INFOMSGS
Supprime tous les messages d'information.
COUNT_ROWS
Spécifie que la colonne row_count est mise à jour à l'aide du nombre actuel de lignes dans la table ou la vue.
Notes
DBCC UPDATEUSAGE
corrige le nombre de lignes, de pages utilisées, de pages réservées, de pages feuilles et de pages de données pour chaque partition d’une table ou d’un index. S’il n’y a pas d’inexactitudes dans les tables système, DBCC UPDATEUSAGE
ne retourne aucune donnée. Si des inexactitudes sont trouvées et corrigées et si l’option WITH NO_INFOMSGS n’est pas utilisée, DBCC UPDATEUSAGE
retourne les lignes et les colonnes mises à jour dans les tables système.
DBCC CHECKDB
a été amélioré pour détecter quand les nombres de pages ou de lignes deviennent négatifs. Une fois cette détection effectuée, la sortie de DBCC CHECKDB
contient un avertissement et une recommandation d’exécution de DBCC UPDATEUSAGE
afin de régler le problème.
Bonnes pratiques
Nous recommandons ce qui suit :
- N’exécutez pas
DBCC UPDATEUSAGE
de façon régulière, car SQL Server conserve les métadonnées dans la plupart des circonstances.DBCC UPDATEUSAGE
doit être exécuté en fonction des besoins, par exemple quand vous pensez que des valeurs incorrectes sont retournées parsp_spaceused
.DBCC UPDATEUSAGE
peut prendre du temps pour s'exécuter sur de grandes tables ou bases de données. - Envisagez d’exécuter
DBCC UPDATEUSAGE
de façon régulière (par exemple chaque semaine) seulement si la base de données subit de fréquentes modifications de type DDL, par exemple avec des instructions CREATE, ALTER ou DROP.
Jeux de résultats
DBCC UPDATEUSAGE
retourne le résultat suivant (les valeurs peuvent varier) :
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Autorisations
Nécessite l’appartenance au rôle de serveur fixe sysadmin ou au rôle de base de données fixe db_owner .
Exemples
R. Mettre à jour le nombre de pages ou de lignes, ou les deux, pour tous les objets de la base de données active
L'exemple suivant donne la valeur 0
au nom de la base de données et DBCC UPDATEUSAGE
renvoie des informations mises à jour sur le nombre de pages ou de lignes dans la base de données active.
DBCC UPDATEUSAGE (0);
GO
B. Mettre à jour le nombre de pages ou de lignes, ou les deux, pour AdventureWorks et supprimer les messages d’information
L'exemple suivant spécifie AdventureWorks2022
en tant que nom de la base de données et supprime tous les messages d'information.
DBCC UPDATEUSAGE (AdventureWorks2022) WITH NO_INFOMSGS;
GO
C. Mettre à jour le nombre de pages ou de lignes, ou les deux, pour la table Employee
L’exemple suivant retourne des informations mises à jour sur le nombre de pages ou de lignes dans la table Employee
de la base de données AdventureWorks2022
.
DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee');
GO
D. Mettre à jour le nombre de pages ou de lignes, ou les deux, pour un index spécifique d’une table
L'exemple suivant spécifie IX_Employee_ManagerID
en tant que nom d'index.
DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee', IX_Employee_OrganizationLevel_OrganizationNode);
GO