Включение индексов и ограничений

В этом разделе описывается включение отключенного индекса в SQL Server 2012 с помощью среды Среда SQL Server Management Studio или Transact-SQL. После отключения индекс остается в отключенном состоянии до тех пор, пока он не будет перестроен или удален.

В этом разделе

  • Перед началом работы.

    Ограничения

    Безопасность

  • Включение отключенного индекса с помощью различных средств.

    Среда SQL Server Management Studio

    Transact-SQL

Перед началом работы

Ограничения

  • После перестроения индекса нужно вручную включить все ограничения, которые были отключены из-за отключения индекса. Ограничения 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.

    Не удалось выполнить операцию.

    Операция выполнена успешно.

Безопасность

Разрешения

Необходимо разрешение ALTER для таблицы или представления. При использовании инструкции DBCC DBREINDEX пользователь должен быть владельцем таблицы, членом предопределенной роли сервера sysadmin, предопределенной роли базы данных db_ddladmin или предопределенной роли базы данных db_owner.

Значок стрелки, используемый со ссылкой «В начало»[В начало]

Использование среды SQL Server Management Studio

Включение отключенного индекса

  1. В обозревателе объектов щелкните знак «плюс», чтобы развернуть базу данных, содержащую таблицу, в которой необходимо включить индекс.

  2. Чтобы развернуть папку Таблицы, щелкните знак «плюс» (+).

  3. Щелкните знак «плюс», чтобы развернуть таблицу, в которой необходимо включить индекс.

  4. Чтобы развернуть папку Индексы, щелкните знак «плюс» (+).

  5. Щелкните правой кнопкой мыши индекс, который необходимо включить и выберите пункт Перестроить.

  6. В диалоговом окне Перестроение индексов убедитесь, что нужный индекс приведен в сетке Индексы для перестройки и нажмите кнопку ОК.

Включение всех индексов таблицы

  1. В обозревателе объектов щелкните знак «плюс», чтобы развернуть базу данных, содержащую таблицу, в которой необходимо включить индексы.

  2. Чтобы развернуть папку Таблицы, щелкните знак «плюс» (+).

  3. Щелкните знак «плюс», чтобы развернуть таблицу, в которой необходимо включить индексы.

  4. Щелкните правой кнопкой мыши папку Индексы и выберите Перестроить все.

  5. В диалоговом окне Перестройка индексов убедитесь, что нужные индексы приведены в сетке Индексы для перестроения и нажмите кнопку ОК. Для удаления индекса из сетки Индексы для перестроения выделите индекс и нажмите клавишу DELETE.

В диалоговом окне Перестроение индексов доступны следующие сведения.

Значок стрелки, используемый со ссылкой «В начало»[В начало]

Использование Transact-SQL

Использование инструкции ALTER INDEX для включения отключенного индекса

  1. В обозревателе объектов подключитесь к экземпляру компонента Компонент Database Engine.

  2. На стандартной панели выберите пункт Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.

    USE AdventureWorks2012;
    GO
    -- Enables the IX_Employee_OrganizationLevel_OrganizationNode index
    -- on the HumanResources.Employee table.
    
    ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee
    REBUILD; 
    GO
    

Использование инструкции CREATE INDEX для включения отключенного индекса

  1. В обозревателе объектов подключитесь к экземпляру компонента Компонент Database Engine.

  2. На стандартной панели выберите пункт Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.

    USE AdventureWorks2012;
    GO
    -- re-creates the IX_Employee_OrganizationLevel_OrganizationNode index
    -- on the HumanResources.Employee table
    -- using the OrganizationLevel and OrganizationNode columns
    -- and then deletes the existing IX_Employee_OrganizationLevel_OrganizationNode index
    CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee
       (OrganizationLevel, OrganizationNode)
    WITH (DROP_EXISTING = ON);
    GO
    

Использование инструкции DBCC DBREINDEX для включения отключенного индекса

  1. В обозревателе объектов подключитесь к экземпляру компонента Компонент Database Engine.

  2. На стандартной панели выберите пункт Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.

    USE AdventureWorks2012; 
    GO
    -- enables the IX_Employee_OrganizationLevel_OrganizationNode index
    -- on the HumanResources.Employee table
    DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
    GO
    

Использование инструкции ALTER INDEX для включения всех индексов в таблице

  1. В обозревателе объектов подключитесь к экземпляру компонента Компонент Database Engine.

  2. На стандартной панели выберите пункт Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.

    USE AdventureWorks2012;
    GO
    -- enables all indexes
    -- on the HumanResources.Employee table
    ALTER INDEX ALL ON HumanResources.Employee
    REBUILD;
    GO
    

Использование инструкции DBCC DBREINDEX для включения всех индексов в таблице

  1. В обозревателе объектов подключитесь к экземпляру компонента Компонент Database Engine.

  2. На стандартной панели выберите пункт Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.

    USE AdventureWorks2012; 
    GO
    -- enables all indexes
    -- on the HumanResources.Employee table
    DBCC DBREINDEX ("HumanResources.Employee", " ");
    GO
    

Дополнительные сведения см. в разделах ALTER INDEX (Transact-SQL), CREATE INDEX (Transact-SQL) и DBCC DBREINDEX (Transact-SQL).

Значок стрелки, используемый со ссылкой «В начало»[В начало]