DBCC UPDATEUSAGE (Transact-SQL)

Indique et corrige le nombre de pages et de lignes inexact dans les vues de catalogue. Ces inexactitudes peuvent entraîner des rapports d'utilisation d'espace, retournés par la procédure stockée système sp_spaceused, qui soient incorrects. Dans SQL Server 2005, ces valeurs sont toujours gérées correctement. Les bases de données créées dans SQL Server 2005 ne doivent jamais présenter de décomptes incorrects ; toutefois, les bases de données mises à niveau vers SQL Server 2005 peuvent contenir des décomptes incorrects. Il est recommandé d'utiliser DBCC UPDATEUSAGE après une mise à niveau vers SQL Server 2005 pour corriger les éventuels décomptes non valides.

Icône Lien de rubriqueConventions de 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 actuelle 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. Le nom des tables et des vues doit suivre les règles applicables aux identificateurs.
  • index_id | index_name
    Identification 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 les options.
  • NO_INFOMSGS
    N'affiche plus les messages d'information.
  • COUNT_ROWS
    Spécifie que la colonne row count est mise à jour à l'aide du comptage actuel du nombre de lignes dans la table ou la vue.

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.

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 alors aucune donnée. Si des imprécisions sont trouvées et corrigées et que 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.

Vous devez utiliser UPDATEUSAGE pour synchroniser les compteurs espace-utilisation. DBCC UPDATEUSAGE peut prendre un peu de temps pour s'exécuter sur des tables ou des bases de données volumineuses ; cette instruction ne doit donc être généralement utilisée que lorsque vous pensez qu'il existe des valeurs incorrectes retournées par sp_spaceused. Cette procédure stockée accepte un paramètre facultatif pour exécuter DBCC UPDATEUSAGE avant de retourner des informations relatives à l'espace occupé par la table ou par l'index.

Mise a niveau des bases de données

Dans les versions antérieures de SQL Server, les valeurs du nombre de lignes de table et d'index et du nombre de pages peuvent être incorrectes. Les bases de données créées avec des versions antérieures à SQL Server 2005 peuvent contenir des décomptes incorrects. Par conséquent, il est recommandé d'utiliser DBCC UPDATEUSAGE après une mise à niveau vers SQL Server 2005 pour corriger les éventuels décomptes non valides.

Dans SQL Server 2005, DBCC CHECKDB a été amélioré pour détecter les décomptes de pages ou de lignes négatifs. Lors d'une telle détection, 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. Même s'il peut sembler que la mise à niveau de la base de données vers SQL Server 2005 crée ce problème, les décomptes non valides existaient avant la procédure de mise à niveau.

Autorisations

Nécessite 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 des deux, pour tous les objets de la base de données actuelle

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 des deux, pour AdventureWorks et suppression des messages d'information

Cet exemple précise AdventureWorks comme nom de la base de données et supprime tous les messages d'information.

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

C. Mise à jour du nombre de pages ou de lignes, ou des 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 AdventureWorks.

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

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

L'exemple suivant indique IX_Employee_ManagerID comme nom d'index.

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

Voir aussi

Référence

DBCC (Transact-SQL)
sp_spaceused (Transact-SQL)
sys.sysindexes (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)

Autres ressources

Architecture des tables et des index
Procédure : mise à niveau d'une base de données avec Detach et Attach (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005