Поделиться через


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

См. также