Перемещение существующего индекса в другую файловую группу
В этом разделе описывается, как переместить текущий индекс из текущей файловой группы в другую файловую группу в 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
Перемещение существующего индекса в другую файловую группу с помощью конструктора таблиц
В обозревателе объектов щелкните знак «плюс», чтобы развернуть базу данных, содержащую таблицу, где находится индекс, который нужно переместить.
Чтобы развернуть папку Таблицы, щелкните знак «плюс» (+).
Щелкните правой кнопкой мыши таблицу, содержащую индекс, который нужно переместить, и выберите пункт Конструктор.
В меню Конструктор таблиц выберите пункт Индексы и ключи.
Выберите индекс, который нужно переместить.
В основной сетке разверните узел Спецификация пространства данных.
Выберите значение Имя файловой группы или схемы секционирования и выберите из списка файловую группу или схему секционирования, в которую нужно переместить индекс.
Нажмите кнопку Закрыть.
В меню Файл выберите команду Сохранить table_name.
Перемещение существующего индекса в другую файловую группу в обозревателе объектов
В обозревателе объектов щелкните знак «плюс», чтобы развернуть базу данных, содержащую таблицу, где находится индекс, который нужно переместить.
Чтобы развернуть папку Таблицы, щелкните знак «плюс» (+).
Щелкните знак «плюс», чтобы развернуть таблицу, содержащую индекс, который необходимо переместить.
Чтобы развернуть папку Индексы, щелкните знак «плюс» (+).
Щелкните правой кнопкой мыши индекс, который нужно переместить, и выберите пункт Свойства.
В разделе Выбор страницы выберите пункт Хранение.
Выберите файловую группу, в которую необходимо переместить индекс.
если таблица или индекс секционированы, выберите схему секционирования, в которую переместить индекс. Дополнительные сведения о секционированных индексах см. в разделе Секционированные таблицы и индексы.
если перемещается кластеризованный индекс, можно использовать обработку в сети. Обработка в сети разрешает одновременный доступ пользователей к основным данным и к некластеризованным индексам в течение операции с индексами. Дополнительные сведения см. в разделе Выполнение операции с индексами в сети.
На многопроцессорных компьютерах с SQL Server 2012 можно настроить количество ЦП, используемых для выполнения инструкции индекса, указав значение максимальной степени параллелизма. Параллельные операции с индексами доступны не во всех выпусках SQL Server. Список функций, поддерживаемых различными выпусками SQL Server, см. в разделе Функции, поддерживаемые различными выпусками SQL Server 2012 (https://go.microsoft.com/fwlink/?linkid=232473). Дополнительные сведения о параллельных операциях с индексами см. в разделе Настройка параллельных операций с индексами.
Нажмите кнопку ОК.
На странице Хранение диалогового окна Свойства индекса ― index_name доступны следующие сведения.
Файловая группа
Сохраняет индекс в указанной файловой группе. Этот список содержит только стандартные файловые группы (ROW). По умолчанию из этого списка выбирается первичная файловая группа (PRIMARY) текущей базы данных.Файловая группа файлового потока
Задает файловую группу для данных FILESTREAM. Этот список содержит только файловые группы FILESTREAM. По умолчанию из этого списка выбирается файловая группа PRIMARY FILESTREAM.Схема секционирования
Хранит индекс в схеме секционирования. Если нажать кнопку Схема секционирования, активируется сетка внизу. По умолчанию из списка выбирается схема секционирования, использованная для хранения данных таблицы. При выборе из списка другой схемы секционирования данные в сетке обновляются.Параметр схемы секционирования недоступен, если в базе данных нет ни одной схемы секционирования.
Схема секционирования файлового потока
Задает схему секционирования для данных FILESTREAM. Схема секционирования должна быть симметрична схеме, указанной в параметре Схема секционирования.Если таблица не секционирована, это поле пусто.
Параметр схемы секционирования
Отображает имя столбца, участвующего в схеме секционирования.Столбец таблицы
Выберите таблицу или представление для сопоставления схеме секционирования.Тип данных столбца
Выводит сведения о типах данных для данного столбца.Примечание Если это вычисляемый столбец, в поле Тип данных столбца отображается отметка «вычисляемый столбец».
Разрешить обработку в сети DML-инструкций во время переноса индекса
Параметр дает пользователям возможность получать доступ к данным базовой таблицы или кластеризованного индекса, а также к любым связанным с ними некластеризованным индексам при операциях с индексами.Примечание Этот параметр недоступен для XML-индексов, а также в случае, если это отключенный кластеризованный индекс.
Укажите максимальную степень параллелизма
Ограничивает число процессоров, используемых в одновременном исполнении планов. При значении по умолчанию 0 используется реальное число доступных ЦП. При установке значения 1 создание параллельных планов становится невозможным; при установке значения больше 1 ограничивается максимальное число процессоров, используемых для выполнения одного запроса. Этот параметр становится доступным только в случае, если диалоговое окно находится в состоянии Перестроение или Повторное создание.Примечание Если задано значение, превышающее число доступных ЦП, используется фактическое число доступных ЦП.
[Top]
Использование Transact-SQL
Перемещение существующего индекса в другую файловую группу
В обозревателе объектов установите соединение с экземпляром компонента Компонент Database Engine.
На панели «Стандартная» выберите пункт Создать запрос.
Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.
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]