DBCC UPDATEUSAGE (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure 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 ] ]

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 et versions antérieures, consultez Versions antérieures de la documentation.

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 par sp_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 Employeede 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

Voir aussi