DBCC UPDATEUSAGE (Transact-SQL)

Описывает и корректирует неточности в подсчете страниц и строк в представлениях каталога. Эти неточности могут стать причиной неверных отчетов об использовании пространства, возвращаемых системной хранимой процедурой sp_spaceused. В SQL Server 2005 эти значения всегда обслуживаются правильно. В базах данных, созданных в SQL Server 2005, не должно быть неверных подсчетов, однако базы данных, обновленные до SQL Server 2005, могут содержать неверные подсчеты. Рекомендуется выполнить инструкцию DBCC UPDATEUSAGE после обновления до версии SQL Server 2005, чтобы исправить неверные подсчеты.

Значок ссылки на разделСоглашения о синтаксическом обозначении в 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 execution completed. If DBCC printed error messages, contact your system administrator.

Замечания

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

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

Обновление баз данных

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

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

Разрешения

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

Примеры

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

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

DBCC UPDATEUSAGE (0);
GO

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

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

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

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

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

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

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

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

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

См. также

Справочник

DBCC (Transact-SQL)
sp_spaceused (Transact-SQL)
sys.sysindexes (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)

Другие ресурсы

Архитектура таблиц и индексов
Как обновить базу данных при помощи отсоединения и присоединения (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005