DBCC UPDATEUSAGE (Transact-SQL)
Описывает и исправляет неточности в подсчете страниц и строк в представлениях каталога. Эти неточности могут стать причиной неверных отчетов об использовании пространства, возвращаемых системной хранимой процедурой sp_spaceused.
Синтаксис
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
Б. Обновление результатов подсчета страниц, строк или того и другого одновременно для базы данных 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
Журнал изменений
Обновления |
---|
В раздел «Примечания» добавлены рекомендации. |
См. также