DBCC UPDATEUSAGE (Transact-SQL)

Relata e corrige inexatidões de contagem de páginas e linhas nas exibições do catálogo. Essas inexatidões podem provocar relatórios de uso incorreto de espaço retornados pelo procedimento armazenado do sistema sp_spaceused.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

DBCC UPDATEUSAGE 
(   { database_name | database_id | 0 } 
    [ , { table_name | table_id | view_name | view_id } 
    [ , { index_name | index_id } ] ] 
) [ WITH [ NO_INFOMSGS ] [ , ] [ COUNT_ROWS ] ] 

Argumentos

  • database_name | database_id | 0
    É o nome ou a ID do banco de dados na qual serão relatadas e corrigidas as estatísticas de uso de espaço. Se 0 for especificado, será usado o banco de dados atual. Os nomes de bancos de dados devem obedecer às regras de identificadores.

  • table_name | table_id | view_name | view_id
    É o nome ou a ID da tabela ou exibição indexada para a qual serão relatadas e corrigidas as estatísticas de uso de espaço. Os nomes de tabelas e exibições devem obedecer às regras de identificadores.

  • index_id | index_name
    É a ID ou o nome do índice a ser usado. Se não for especificado, a instrução processará todos os índices da tabela ou a exibição especificada.

  • WITH
    Permite que opções sejam especificadas.

  • NO_INFOMSGS
    Suprime todas as mensagens informativas.

  • COUNT_ROWS
    Especifica que a coluna de contagem de linhas seja atualizada com a contagem atual do número de linhas na tabela ou na exibição.

Comentários

DBCC UPDATEUSAGE corrige as contagens das linhas, páginas usadas, páginas reservadas, páginas de folha e páginas de dados de cada partição em uma tabela ou índice. Se não houver nenhuma inexatidão nas tabelas do sistema, DBCC UPDATEUSAGE não retornará dados. Se inexatidões forem encontradas e corrigidas, e WITH NO_INFOMSGS não for usado, DBCC UPDATEUSAGE retornará as linhas e as colunas que foram atualizadas nas tabelas do sistema.

O DBCC CHECKDB foi aprimorado para detectar quando as contagens de páginas ou de linhas se tornam negativas. Quando detectada, a saída do DBCC CHECKDB contém um aviso e uma recomendação para executar DBCC UPDATEUSAGE para resolver o problema.

Práticas recomendadas

  • Sempre execute DBCC UPDATEUSAGE depois de atualizar um banco de dados no SQL Server 2000. As contagens de páginas e de linhas são corrigidas e mantidas dali para a frente.

  • Não execute DBCC UPDATEUSAGE habitualmente para bancos de dados criados no SQL Server 2005 ou posterior ou em bancos de dados atualizados que foram corrigidos uma vez usando DBCC UPDATEUSAGE. Como DBCC UPDATEUSAGE pode levar algum tempo para ser executado em tabelas ou bancos de dados grandes, não deve ser usado, a não ser que você suspeite que valores incorretos estão sendo retornados por sp_spaceused.

  • Considere a execução de DBCC UPDATEUSAGE rotineiramente (por exemplo, semanalmente) somente se o banco de dados passar por modificações de DDL (Linguagem de definição de dados) frequentes, como instruções CREATE, ALTER ou DROP.

Conjuntos de resultados

DBCC UPDATEUSAGE retorna (os valores podem variar):

A execução do DBCC foi concluída. Se o DBCC imprimiu mensagens de erro, entre em contato com o administrador do sistema.

Permissões

Exige associação na função de servidor fixa sysadmin ou na função de banco de dados fixa db_owner.

Exemplos

A. Atualizando as contagens de páginas ou de linhas ou de ambas para todos os objetos do banco de dados atual

O exemplo a seguir especifica 0 para o nome do banco de dados, e DBCC UPDATEUSAGE relata informações sobre contagem de páginas ou de linhas atualizadas para o banco de dados atual.

DBCC UPDATEUSAGE (0);
GO

B. Atualizando contagens de páginas ou de linhas ou de ambas e suprimindo mensagens informativas

O exemplo a seguir especifica AdventureWorks2008R2 como o nome do banco de dados e suprime todas as mensagens informativas.

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

C. Atualizando contagens de páginas ou de linhas para uma tabela

O exemplo a seguir relata informações de contagem de páginas ou de linhas atualizadas para a tabela Employee no banco de dados AdventureWorks2008R2.

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

D. Atualizando contagens de páginas ou de linhas ou de ambas para um índice específico em uma tabela

O exemplo a seguir especifica um nome de índice.

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