DBCC UPDATEUSAGE (Transact-SQL)

Описывает и исправляет неточности в подсчете страниц и строк в представлениях каталога. Эти неточности могут стать причиной неверных отчетов об использовании пространства, возвращаемых системной хранимой процедурой sp_spaceused.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

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

Аргументы

  • database_name | database_id | 0
    Имя или идентификатор базы данных, для которой нужно составить отчет и исправить статистику использования дискового пространства. Если указано 0, используется текущая база данных. Имена баз данных должны соответствовать правилам для идентификаторов.

  • table_name | table_id | view_name | view_id
    Имя или идентификатор таблицы или индексированного представления, для которой нужно составить отчет и исправить статистику использования дискового пространства. Имена таблиц и представлений должны соответствовать правилам для идентификаторов.

  • index_id | index_name
    Имя или идентификатор используемого индекса. Если этот аргумент не указан, инструкция обрабатывает все индексы для указанной таблицы или представления.

  • WITH
    Позволяет указывать параметры.

  • NO_INFOMSGS
    Подавляет все информационные сообщения.

  • COUNT_ROWS
    Указывает, что столбец row count обновляется текущим значением количества строк в таблице или представлении.

Замечания

Инструкция DBCC UPDATEUSAGE исправляет результаты подсчета строк, использованных страниц, зарезервированных страниц, конечных страниц и страниц данных для каждой секции в таблице или индексе. Если в системных таблицах нет неточностей, инструкция DBCC UPDATEUSAGE не возвращает никаких данных. Если неточности обнаружены и исправлены, а параметр WITH NO_INFOMSGS не использовался, инструкция DBCC UPDATEUSAGE возвращает строки и столбцы, обновляемые в системных таблицах.

Инструкция DBCC CHECKDB была улучшена для обнаружения неправильных результатов подсчета страниц и строк. При их обнаружении выходные данные инструкции DBCC CHECKDB будут содержать предупреждение и рекомендацию выполнить инструкцию DBCC UPDATEUSAGE, чтобы решить эту проблему.

Рекомендации

  • Всегда запускайте инструкцию DBCC UPDATEUSAGE после обновления базы данных от версии SQL Server 2000. Счетчики страниц и строк исправлены и будут поддерживаться в правильном состоянии.

  • Не следует регулярно выполнять инструкцию DBCC UPDATEUSAGE для баз данных, созданных в SQL Server 2005 или более новых версиях или в базах данных, обновленных с помощью инструкции DBCC UPDATEUSAGE. Поскольку выполнение инструкции DBCC UPDATEUSAGE для больших таблиц или баз данных занимает много времени, ее следует запускать, только если есть подозрения, что хранимая процедура sp_spaceused возвращает неверные значения.

  • Регулярно (например, еженедельно) инструкцию DBCC UPDATEUSAGE стоит выполнять, только если в базе данных часто производятся изменения на языке описания данных DDL, например выполняются инструкции CREATE, ALTER или DROP.

Результирующие наборы

Сообщение инструкции DBCC UPDATEUSAGE (значения могут меняться).

Выполнение DBCC завершено. Если инструкция DBCC выдает сообщения об ошибках, обратитесь к системному администратору.

Разрешения

Необходимо членство в предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner.

Примеры

А. Обновление результатов подсчета страниц, строк или того и другого одновременно для всех объектов в текущей базе данных

В следующем примере в качестве имени базы данных указывается значение 0, и инструкция DBCC UPDATEUSAGE выдает обновленные сведения о подсчете страниц или строк для текущей базы данных.

DBCC UPDATEUSAGE (0);
GO

Б. Обновление результатов подсчета страниц, строк или того и другого одновременно с подавлением информационных сообщений

В следующем примере в качестве имени базы данных указано База данных AdventureWorks2008R2, а все информационные сообщения подавлены.

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

В. Обновление результатов подсчета страниц, строк или того и другого в таблице

В следующем примере выдаются обновленные сведения о подсчете страниц или строк для таблицы Employee в базе данных База данных AdventureWorks2008R2.

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

Г. Обновление результатов подсчета страниц, строк или того и другого одновременно для указанного индекса в таблице

В следующем примере указано имя индекса.

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