DBCC DBREINDEX (Transact-SQL)

Применимо к: SQL Server Управляемый экземпляр SQL Azure

Перестраивает один или более индексов для таблицы в указанной базе данных.

Важно!

В будущей версии Microsoft SQL Server этот компонент будет удален. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Используйте вместо нее инструкцию ALTER INDEX.

Применимо к: SQL Server 2008 (10.0.x) и более поздних версий.

Соглашения о синтаксисе Transact-SQL

Синтаксис

DBCC DBREINDEX
(
    table_name
    [ , index_name [ , fillfactor ] ]
)
    [ WITH NO_INFOMSGS ]

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

table_name

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

index_name

Имя перестраиваемого индекса. Имена индексов должны соответствовать правилам для идентификаторов. Если аргумент index_name задан, также должен быть указан аргумент table_name. Если index_name не указан или имеет значение ' ', все индексы для таблицы перестраиваются.

fillfactor

Процент пространства на каждой странице индекса для хранения данных при создании или перестроении индекса. Fillfactor заменяет коэффициент заполнения при создании индекса, становясь новым значением по умолчанию для индекса и для всех других некластеризованных индексов, так как кластеризованный индекс перестроен.

Если fillfactor равно 0, использует значение коэффициента заполнения, DBCC DBREINDEX последнее указанное для индекса. Это значение хранится в представлении sys.indexes каталога.

Если аргумент fillfactor задан, также должны быть указаны аргументы table_name и index_name. Если fillfactor не указан, используется коэффициент заполнения по умолчанию 100. Дополнительные сведения см. в статье Указание коэффициента заполнения для индекса.

WITH NO_INFOMSGS

Подавляет все информационные сообщения со степенями серьезности от 0 до 10.

Remarks

DBCC DBREINDEX перестраивает индекс для таблицы или все индексы, определенные для таблицы. При разрешенном динамическом перестроении индекса индексы с ограничениями PRIMARY KEY или UNIQUE можно перестраивать без необходимости удаления и повторного создания этих ограничений. Это значит, что индекс может быть перестроен без необходимости знания структуры таблицы или ее ограничений. Потребность в этом может возникнуть после массового копирования данных в таблицу.

DBCC DBREINDEX может перестроить все индексы для таблицы в одной инструкции. Это проще, чем написание нескольких DROP INDEX операторов и CREATE INDEX . Так как работа выполняется одним оператором, DBCC DBREINDEX автоматически атомарна, в то время как отдельные DROP INDEX операторы и CREATE INDEX должны быть включены в транзакцию, чтобы быть атомарными. Кроме того, предлагает больше оптимизаций, DBCC DBREINDEX чем отдельные DROP INDEX операторы и CREATE INDEX .

В отличие от DBCC INDEXDEFRAG, или ALTER INDEX с параметром REORGANIZE , DBCC DBREINDEX является автономной операцией. Если некластеризованный индекс перестраивается, общая блокировка удерживается в таблице, о которой идет речь, во время операции. Это предотвращает изменения в таблице. Если перестраивается кластеризованный индекс, удерживается монопольная блокировка таблицы. Это предотвращает какой-либо доступ к таблице, делая ее вне сети. Чтобы выполнить перестроение индекса в режиме "в сети" или для управления степенью параллелизма во время операции перестроения индекса, используйте инструкцию ALTER INDEX REBUILD с параметром ONLINE .

Дополнительные сведения о выборе метода для перестроения или реорганизации индекса см. в разделе Реорганизация и перестроение индексов.

Ограничения

DBCC DBREINDEX не поддерживается для использования в следующих объектах:

  • Системные таблицы
  • Пространственные индексы
  • Индексы columnstore, оптимизированные для памяти

Наборы результатов

NO_INFOMSGS Если параметр не указан (необходимо указать имя таблицы), DBCC DBREINDEX всегда возвращает следующее:

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Разрешения

Вызывающий должен быть владельцем таблицы, членом предопределенной роли сервера sysadmin, предопределенной роли базы данных db_owner или предопределенной роли базы данных db_ddladmin.

Примеры

A. Перестроение индекса

В следующем примере перестраивается кластеризованный индекс Employee_EmployeeID с коэффициентом заполнения 80 для таблицы Employee базы данных AdventureWorks2022.

USE AdventureWorks2022;
GO
DBCC DBREINDEX ('HumanResources.Employee', PK_Employee_BusinessEntityID, 80);
GO

Б. Перестроение всех индексов

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

USE AdventureWorks2022;
GO
DBCC DBREINDEX ('HumanResources.Employee', ' ', 70);
GO

См. также раздел