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.
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) freqüentes, 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 para o AdventureWorks e suprimindo mensagens informativas
O exemplo a seguir especifica AdventureWorks como o nome do banco de dados e suprime todas as mensagens informativas.
USE AdventureWorks;
GO
DBCC UPDATEUSAGE (AdventureWorks) 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 linhas atualizadas para a tabela Employee no banco de dados AdventureWorks .
USE AdventureWorks;
GO
DBCC UPDATEUSAGE (AdventureWorks,"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 AdventureWorks;
GO
DBCC UPDATEUSAGE (AdventureWorks, "HumanResources.Employee", IX_Employee_ManagerID);
GO
Histórico de alterações
Conteúdo atualizado |
---|
Seção Práticas recomendadas adicionada aos Comentários. |