DBCC UPDATEUSAGE (Transact-SQL)

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 en matière d'utilisation de l'espace.

Icône Lien de rubriqueConventions 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 consigné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 consigné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 de feuilles et de pages de données pour chaque partition d'une table ou d'un index. S'il n'y a pas d'imprécisions dans les tables système, DBCC UPDATEUSAGE ne retourne aucune donnée. Si des imprécisions 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 le moment où 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 relatifs à l'exécution de DBCC UPDATEUSAGE afin de régler le problème.

Meilleures pratiques

  • Exécutez toujours DBCC UPDATEUSAGE après la mise à niveau d'une base de données à partir de SQL Server 2000. Les nombres de pages et de lignes sont corrigés et ensuite conservés.

  • N'exécutez pas DBCC UPDATEUSAGE de manière régulière sur les bases de données créées dans SQL Server 2005 ou version ultérieure, ni sur les bases de données mises à niveau qui ont été corrigées une fois à l'aide de DBCC UPDATEUSAGE. Dans la mesure où DBCC UPDATEUSAGE peut prendre un certain temps pour s'exécuter sur les tables ou bases de données de grande taille, ne l'utilisez que si vous pensez que des valeurs incorrectes sont retournées par sp_spaceused.

  • Envisagez d'exécuter DBCC UPDATEUSAGE de manière régulière (chaque semaine, par exemple) uniquement si la base de données subit de fréquentes modifications du langage de définition de données (DDL), par exemple avec les instructions CREATE, ALTER ou DROP.

Jeux de résultats

DBCC UPDATEUSAGE retourne le résultat suivant (les valeurs peuvent varier) :

Exécution de DBCC terminée. Si DBCC vous a adressé des messages d'erreur, contactez l'administrateur système.

Autorisations

Requiert l'appartenance au rôle serveur fixe sysadmin ou au rôle de base de données fixe db_owner.

Exemples

A. Mise à jour du 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. Mise à jour du nombre de pages ou de lignes, ou les deux et suppression des messages d'information

L'exemple suivant spécifie AdventureWorks2008R2 en tant que nom de la base de données et supprime tous les messages d'information.

USE AdventureWorks2008R2;
GO
DBCC UPDATEUSAGE (AdventureWorks2008R2) WITH NO_INFOMSGS; 
GO

C. Mise à jour du nombre de pages ou de lignes, ou les deux, pour une table

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 AdventureWorks2008R2.

USE AdventureWorks2008R2;
GO
DBCC UPDATEUSAGE (AdventureWorks2008R2,"HumanResources.Employee");
GO

D. Mise à jour du nombre de pages ou de lignes, ou les deux, pour un index précis d'une table

L'exemple suivant spécifie un nom d'index.

USE AdventureWorks2008R2;
GO
DBCC UPDATEUSAGE (AdventureWorks2008R2, "HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
GO