Partilhar via


DBCC UPDATEUSAGE (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Relata e corrige inexatidões de contagem de páginas e linhas nas exibições do catálogo. Essas inexatidões podem fazer com que o procedimento armazenado do sistema sp_spaceused retorne relatórios de uso de espaço incorretos.

Convenções de sintaxe de 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 ] ]

Observação

Para ver a sintaxe do Transact-SQL para o SQL Server 2014 e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

database_name | database_id | 0

O nome ou a ID do banco de dados em que 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 banco de dados precisam estar em conformidade com as regras de identificadores.

table_name | table_id | view_name | view_id

O nome ou a ID da tabela ou exibição indexada em que 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 de linhas, páginas usadas, páginas reservadas, páginas folha e páginas de dados de cada partição em uma tabela ou índice. Se não houver inexatidões 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 colunas atualizadas nas tabelas do sistema.

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

Práticas recomendadas

Recomendamos o uso do seguinte:

  • Não execute DBCC UPDATEUSAGE rotineiramente, pois o SQL Server mantém os metadados na maioria das circunstâncias. DBCC UPDATEUSAGE deve ser executado conforme necessário, por exemplo, quando você suspeita que valores incorretos estão sendo retornados por sp_spaceused. DBCC UPDATEUSAGE pode demorar algum tempo para execução em grandes tabelas ou bancos de dados.
  • 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 o seguinte (os valores podem variar):

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

Permissões

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

Exemplos

a. Atualizar as contagens de páginas, 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. Atualizar as contagens de páginas, de linhas ou de ambas para o AdventureWorks e suprimir as mensagens informativas

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

DBCC UPDATEUSAGE (AdventureWorks2022) WITH NO_INFOMSGS;
GO

C. Atualizar as contagens de páginas, de linhas ou de ambas para a tabela “Funcionário”

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

DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee');
GO

D. Atualizar as contagens de páginas, 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 (AdventureWorks2022, 'HumanResources.Employee', IX_Employee_OrganizationLevel_OrganizationNode);
GO

Confira também