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 2005 или более новых версиях или в базах данных, обновленных с помощью инструкции DBCC UPDATEUSAGE. Поскольку выполнение инструкции DBCC UPDATEUSAGE для больших таблиц или баз данных занимает много времени, ее следует запускать, только если есть подозрения, что хранимая процедура sp_spaceused возвращает неверные значения.
Регулярно (например, еженедельно) инструкцию DBCC UPDATEUSAGE стоит выполнять, только если в базе данных часто производятся изменения на языке описания данных DDL, например выполняются инструкции CREATE, ALTER или DROP.
Результирующие наборы
Сообщение инструкции DBCC UPDATEUSAGE (значения могут меняться).
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Разрешения
Необходимо членство в предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner.
Примеры
А.Обновление результатов подсчета страниц, строк или того и другого одновременно для всех объектов в текущей базе данных
В следующем примере в качестве имени базы данных указывается значение 0, и инструкция DBCC UPDATEUSAGE выдает обновленные сведения о подсчете страниц или строк для текущей базы данных.
DBCC UPDATEUSAGE (0);
GO
Б.Обновление результатов подсчета страниц, строк или того и другого одновременно для базы данных AdventureWorks с подавлением информационных сообщений
В следующем примере в качестве имени базы данных указано AdventureWorks2012 , а все информационные сообщения подавлены.
USE AdventureWorks2012;
GO
DBCC UPDATEUSAGE (AdventureWorks2012) WITH NO_INFOMSGS;
GO
В.Обновление результатов подсчета страниц, строк или того и другого одновременно в таблице Employee
В следующем примере выдаются обновленные сведения о подсчете страниц или строк для таблицы Employee в базе данных AdventureWorks2012 .
USE AdventureWorks2012;
GO
DBCC UPDATEUSAGE (AdventureWorks2012,"HumanResources.Employee");
GO
Г.Обновление результатов подсчета страниц, строк или того и другого одновременно для указанного индекса в таблице
В следующем примере указано имя индекса IX_Employee_ManagerID.
USE AdventureWorks2012;
GO
DBCC UPDATEUSAGE (AdventureWorks2012, "HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
GO