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


DBCC UPDATEUSAGE (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр 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 ] ]

Аргументы

database_name | database_id | 0

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

table_name | table_id | view_name | view_id

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

index_id | index_name

Идентификатор или имя используемого индекса. Если этот аргумент не указан, инструкция обрабатывает все индексы для указанной таблицы или представления.

ВМЕСТЕ С

Позволяет указывать параметры.

NO_INFOMSGS

Подавляет вывод всех информационных сообщений.

COUNT_ROWS

Указывает, что столбец row count обновляется текущим значением количества строк в таблице или представлении.

Замечания

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 .

Примеры

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

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

DBCC UPDATEUSAGE (0);
GO

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

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

DBCC UPDATEUSAGE (AdventureWorks2022) WITH NO_INFOMSGS;
GO

В. Обновление счетчиков страниц или строк или обоих для таблицы Employee

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

DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee');
GO

D. Обновление счетчиков страниц или строк или обоих индексов в таблице

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

DBCC UPDATEUSAGE (AdventureWorks2022, 'HumanResources.Employee', IX_Employee_OrganizationLevel_OrganizationNode);
GO

См. также