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