DBCC UPDATEUSAGE (Transact-SQL)
Применимо к:база данныхSQL Server Azure SQL Управляемый экземпляр SQL Azure
Описывает и исправляет неточности в подсчете страниц и строк в представлениях каталога. Эти неточности могут привести к неправильным отчетам об использовании пространства, возвращаемым системной 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 ] ]
Примечание
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
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 обновляется текущим значением количества строк в таблице или представлении.
Remarks
DBCC UPDATEUSAGE
исправляет строки, используемые страницы, зарезервированные страницы, конечные страницы и число страниц данных для каждой секции в таблице или индексе. Если в системных таблицах нет неточностей, DBCC UPDATEUSAGE
данные не возвращаются. Если обнаружены и исправлены неточности, а NO_INFOMSGS WITH не используется, возвращает строки и столбцы, DBCC UPDATEUSAGE
обновляемые в системных таблицах.
DBCC CHECKDB
улучшен для обнаружения отрицательных значений количества страниц или строк. При обнаружении выходные DBCC CHECKDB
данные содержат предупреждение и рекомендацию по выполнению DBCC UPDATEUSAGE
для устранения проблемы.
Рекомендации
Примите во внимание приведенные ниже рекомендации.
- Не запускайте
DBCC UPDATEUSAGE
регулярно, так как SQL Server хранит метаданные в большинстве случаев.DBCC UPDATEUSAGE
должен выполняться по мере необходимости, например при подозрении, что возвращаютсяsp_spaceused
неправильные значения .DBCC UPDATEUSAGE
Если указан аргумент , выполнение процедуры может занимать некоторое время при запуске в отношении больших таблиц или баз данных. - Рекомендуется выполнять
DBCC UPDATEUSAGE
регулярно (например, еженедельно) только в том случае, если в базе данных часто происходят изменения языка определения данных (DDL), такие как инструкции CREATE, ALTER или DROP.
Наборы результатов
DBCC UPDATEUSAGE
возвращает (значения могут отличаться):
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Разрешения
Необходимо быть членом предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner .
Примеры
A. Обновление количества страниц или строк для всех объектов в текущей базе данных
В следующем примере в качестве имени базы данных указывается значение 0
, и инструкция DBCC UPDATEUSAGE
выдает обновленные сведения о подсчете страниц или строк для текущей базы данных.
DBCC UPDATEUSAGE (0);
GO
Б. Обновление количества страниц или строк для AdventureWorks и подавление информационных сообщений
В следующем примере в качестве имени базы данных указано AdventureWorks2022
, а все информационные сообщения подавлены.
DBCC UPDATEUSAGE (AdventureWorks2022) WITH NO_INFOMSGS;
GO
В. Обновление количества страниц или строк для таблицы Employee
В приведенном ниже примере выдаются обновленные сведения о подсчете страниц или строк для таблицы Employee
в базе данных AdventureWorks2022
.
DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee');
GO
Г. Обновление количества страниц или строк для определенного индекса в таблице
В следующем примере указано имя индекса IX_Employee_ManagerID
.
DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee', IX_Employee_OrganizationLevel_OrganizationNode);
GO