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.

Í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 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):

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.

USE AdventureWorks2012;
GO
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 .

USE AdventureWorks2012;
GO
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.

USE AdventureWorks2012;
GO
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)