Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
Azure SQL База данных
Azure SQL Управляемый экземпляр
SQL База данных в Microsoft Fabric
В этой статье описывается, как включить отключенный индекс в SQL Server с помощью SQL Server Management Studio или Transact-SQL. После отключения индекса он остается в отключенном состоянии, пока он не перестроится или не будет удален.
Limitations
После перестроения индекса все ограничения, которые были отключены из-за отключения индекса, должны быть включены вручную.
PRIMARY KEY и UNIQUE ограничения активируются путем перестроения связанного индекса. Перед тем как включить ограничения FOREIGN KEY, ссылающиеся на PRIMARY KEY или UNIQUE, этот индекс необходимо перестроить (включить).
FOREIGN KEY ограничения включены с помощью инструкции ALTER TABLE CHECK CONSTRAINT .
Перестроение отключенного кластеризованного индекса невозможно, если ONLINE опция установлена на ON.
Когда кластеризованный индекс отключен или включен, а некластеризованный индекс отключен, действие кластеризованного индекса на отключенный некластеризованный индекс дает следующие результаты.
| Действие кластеризованного индекса | Отключенное состояние некластеризованного индекса |
|---|---|
ALTER INDEX REBUILD |
Остается отключенным |
ALTER INDEX ALL REBUILD |
Перестроено и включено |
DROP INDEX |
Перестроено и включено |
CREATE INDEX WITH DROP_EXISTING |
Остается отключенным |
Создание кластеризованного индекса работает так же, как и ALTER INDEX ALL REBUILD.
Разрешенные действия на некластеризованных индексах, связанных с кластеризованным индексом, зависят от состояния (отключен или включен) обоих типов индекса. Следующая таблица обобщает разрешенные действия на некластеризованных индексах.
| Действие некластеризованного индекса | Если кластеризованные и некластеризованные индексы отключены | Если кластеризованный индекс включен, а некластеризованный индекс находится в любом состоянии. |
|---|---|---|
ALTER INDEX REBUILD |
Действие завершается сбоем | Действие успешно выполнено |
DROP INDEX |
Действие успешно выполнено | Действие успешно выполнено |
CREATE INDEX WITH DROP_EXISTING |
Действие завершается сбоем | Действие успешно выполнено |
При восстановлении отключенных сжатых некластеризованных индексов по умолчанию используется значение data_compression, что означает, что индексы становятся несжатыми. Связано это с тем, что при отключении некластеризованных индексов метаданные параметров сжатия теряются. Чтобы обойти эту проблему, необходимо указать явное сжатие данных в инструкции перестроения.
Permissions
Необходимо разрешение ALTER для таблицы или представления. При использовании DBCC DBREINDEXнеобходимо либо владеть таблицей, либо быть членом предопределенных ролей сервера sysadmin , либо членом db_ddladmin или db_owner предопределенных ролей базы данных.
Используйте SQL Server Management Studio
Включение отключенного индекса
В обозревателе объектов выберите знак плюса, чтобы развернуть базу данных, содержащую таблицу, в которой требуется включить индекс.
Чтобы развернуть папку Таблицы, выберите значок "плюс".
Выберите знак плюса, чтобы развернуть таблицу, в которой требуется включить индекс.
Выберите знак плюса, чтобы развернуть папку Indexes .
Щелкните правой кнопкой мыши по индексу, который вы хотите активировать, и выберите Перестроить.
В диалоговом окне "Перестроить индексы" убедитесь, что правильный индекс находится в индексах для перестроения сетки и нажмите кнопку "ОК".
Включение всех индексов в таблице
В обозревателе объектов выберите знак плюса, чтобы развернуть базу данных, содержащую таблицу, в которой нужно включить индексы.
Чтобы развернуть папку Таблицы, выберите значок "плюс".
Выберите знак плюса, чтобы развернуть таблицу, в которой необходимо включить индексы.
Щелкните правой кнопкой мыши папку Индексы и выберите Перестроить все.
В диалоговом окне "Перестроение индексов" убедитесь, что правильные индексы находятся в индексах для перестроения сетки и нажмите кнопку "ОК". Для удаления индекса из сетки Индексы для перестроения выделите индекс и нажмите клавишу DELETE.
В диалоговом окне Перестроение индексов приведены следующие сведения:
Использование Transact-SQL
Примеры кода в этой статье используют базу данных образца AdventureWorks2025 или AdventureWorksDW2025, которую можно скачать с домашней страницы образцов и проектов сообщества Microsoft SQL Server и.
Включение отключенного индекса с помощью ALTER INDEX
Выполните следующий сценарий Transact-SQL. Этот пример активирует индекс IX_Employee_OrganizationLevel_OrganizationNode в таблице HumanResources.Employee.
USE AdventureWorks2022;
GO
ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee REBUILD;
GO
Включение отключенного индекса с помощью CREATE INDEX
Выполните следующий сценарий Transact-SQL. В этом примере на таблице IX_Employee_OrganizationLevel_OrganizationNode создается HumanResources.Employee индекс с использованием столбцов OrganizationLevel и OrganizationNode, а затем удаляется существующий IX_Employee_OrganizationLevel_OrganizationNode индекс.
USE AdventureWorks2022;
GO
CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee(OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON);
GO
Включение отключенного индекса с помощью DBCC DBREINDEX
Note
Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.
Выполните следующий сценарий Transact-SQL. Этот пример активирует индекс IX_Employee_OrganizationLevel_OrganizationNode в таблице HumanResources.Employee.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
GO
Включение всех индексов в таблице с помощью ALTER INDEX
Выполните следующий сценарий Transact-SQL. Этот пример активирует все индексы в таблице HumanResources.Employee.
USE AdventureWorks2022;
GO
ALTER INDEX ALL
ON HumanResources.Employee REBUILD;
GO
Включение всех индексов в таблице с помощью DBCC DBREINDEX
Note
Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.
Выполните следующий сценарий Transact-SQL. Этот пример активирует все индексы в таблице HumanResources.Employee.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", " ");
GO