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


Перемещение существующего индекса в другую файловую группу

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

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

  • Перед началом работы выполните следующие действия.

    Ограничения

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

  • Для перемещения существующего индекса в другую файловую группу используется:

    Среда SQL Server Management Studio

    Transact-SQL

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

Ограничения

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

  • В среде Среда Management Studio нельзя перемещать индексы, созданные с помощью ограничения UNIQUE или PRIMARY KEY. Для перемещения этих индексов используйте инструкцию CREATE INDEX с параметром (DROP_EXISTING=ON) в Transact-SQL.

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

Разрешения

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

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

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

Перемещение существующего индекса в другую файловую группу с помощью конструктора таблиц

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

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

  3. Щелкните правой кнопкой мыши таблицу, содержащую индекс, который нужно переместить, и выберите пункт Конструктор.

  4. В меню Конструктор таблиц выберите пункт Индексы и ключи.

  5. Выберите индекс, который нужно переместить.

  6. В основной сетке разверните узел Спецификация пространства данных.

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

  8. Нажмите кнопку Закрыть.

  9. В меню Файл выберите команду Сохранить table_name.

Перемещение существующего индекса в другую файловую группу в обозревателе объектов

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

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

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

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

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

  6. В разделе Выбор страницы выберите пункт Хранение.

  7. Выберите файловую группу, в которую необходимо переместить индекс.

    если таблица или индекс секционированы, выберите схему секционирования, в которую переместить индекс. Дополнительные сведения о секционированных индексах см. в разделе Секционированные таблицы и индексы.

    если перемещается кластеризованный индекс, можно использовать обработку в сети. Обработка в сети разрешает одновременный доступ пользователей к основным данным и к некластеризованным индексам в течение операции с индексами. Дополнительные сведения см. в разделе Выполнение операции с индексами в сети.

    На многопроцессорных компьютерах с SQL Server 2012 можно настроить количество ЦП, используемых для выполнения инструкции индекса, указав значение максимальной степени параллелизма. Параллельные операции с индексами доступны не во всех выпусках SQL Server. Список функций, поддерживаемых различными выпусками SQL Server, см. в разделе Функции, поддерживаемые различными выпусками SQL Server 2012 (https://go.microsoft.com/fwlink/?linkid=232473). Дополнительные сведения о параллельных операциях с индексами см. в разделе Настройка параллельных операций с индексами.

  8. Нажмите кнопку ОК.

На странице Хранение диалогового окна Свойства индекса ― index_name доступны следующие сведения.

  • Файловая группа
    Сохраняет индекс в указанной файловой группе. Этот список содержит только стандартные файловые группы (ROW). По умолчанию из этого списка выбирается первичная файловая группа (PRIMARY) текущей базы данных.

  • Файловая группа файлового потока
    Задает файловую группу для данных FILESTREAM. Этот список содержит только файловые группы FILESTREAM. По умолчанию из этого списка выбирается файловая группа PRIMARY FILESTREAM.

  • Схема секционирования
    Хранит индекс в схеме секционирования. Если нажать кнопку Схема секционирования, активируется сетка внизу. По умолчанию из списка выбирается схема секционирования, использованная для хранения данных таблицы. При выборе из списка другой схемы секционирования данные в сетке обновляются.

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

  • Схема секционирования файлового потока
    Задает схему секционирования для данных FILESTREAM. Схема секционирования должна быть симметрична схеме, указанной в параметре Схема секционирования.

    Если таблица не секционирована, это поле пусто.

  • Параметр схемы секционирования
    Отображает имя столбца, участвующего в схеме секционирования.

  • Столбец таблицы
    Выберите таблицу или представление для сопоставления схеме секционирования.

  • Тип данных столбца
    Выводит сведения о типах данных для данного столбца.

    ПримечаниеПримечание

    Если это вычисляемый столбец, в поле Тип данных столбца отображается отметка «вычисляемый столбец».

  • Разрешить обработку в сети DML-инструкций во время переноса индекса
    Параметр дает пользователям возможность получать доступ к данным базовой таблицы или кластеризованного индекса, а также к любым связанным с ними некластеризованным индексам при операциях с индексами.

    ПримечаниеПримечание

    Этот параметр недоступен для XML-индексов, а также в случае, если это отключенный кластеризованный индекс.

  • Укажите максимальную степень параллелизма
    Ограничивает число процессоров, используемых в одновременном исполнении планов. При значении по умолчанию 0 используется реальное число доступных ЦП. При установке значения 1 создание параллельных планов становится невозможным; при установке значения больше 1 ограничивается максимальное число процессоров, используемых для выполнения одного запроса. Этот параметр становится доступным только в случае, если диалоговое окно находится в состоянии Перестроение или Повторное создание.

    ПримечаниеПримечание

    Если задано значение, превышающее число доступных ЦП, используется фактическое число доступных ЦП.

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

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

Перемещение существующего индекса в другую файловую группу

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

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

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

    USE AdventureWorks2012;
    GO
    -- Creates the TransactionsFG1 filegroup on the AdventureWorks2012 database
    ALTER DATABASE AdventureWorks2012
    ADD FILEGROUP TransactionsFG1;
    GO
    /* Adds the TransactionsFG1dat3 file to the TransactionsFG1 filegroup. Please note that you will have to change the filename parameter in this statement to execute it without errors.
    */
    ALTER DATABASE AdventureWorks2012 
    ADD FILE 
    (
        NAME = TransactionsFG1dat3,
        FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11\MSSQL\DATA\TransactionsFG1dat3.ndf',
        SIZE = 5MB,
        MAXSIZE = 100MB,
        FILEGROWTH = 5MB
    )
    TO FILEGROUP TransactionsFG1;
    GO
    /*Creates the IX_Employee_OrganizationLevel_OrganizationNode index
      on the TransactionsPS1 filegroup and drops the original IX_Employee_OrganizationLevel_OrganizationNode index.
    */
    CREATE NONCLUSTERED INDEX IX_Employee_OrganizationLevel_OrganizationNode
        ON HumanResources.Employee (OrganizationLevel, OrganizationNode)
        WITH (DROP_EXISTING = ON)
        ON TransactionsFG1;
    GO
    

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

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