Compartilhar via


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.

Aplica-se a: SQL Server (SQL Server 2008 à versão atual).

Ícone de vínculo de tópico Convenções da 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. Nomes de banco de dados devem obedecer às regras para 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 row count 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

  • Não execute DBCC UPDATEUSAGE rotineiramente. 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):

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

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 para o AdventureWorks e suprimindo mensagens informativas

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

DBCC UPDATEUSAGE (AdventureWorks2012) WITH NO_INFOMSGS; 
GO

C.Atualizando contagens de páginas ou de linhas ou de ambas para a tabela Employee

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

DBCC UPDATEUSAGE (AdventureWorks2012,'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 IX_Employee_ManagerID como o nome do índice.

DBCC UPDATEUSAGE (AdventureWorks2012, 'HumanResources.Employee', IX_Employee_OrganizationLevel_OrganizationNode);
GO

Consulte também

Referência

DBCC (Transact-SQL)

sp_spaceused (Transact-SQL)

UPDATE STATISTICS (Transact-SQL)