Перемещение существующего индекса в другую файловую группуMove an Existing Index to a Different Filegroup

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL AzureнетХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

В этом разделе описывается, как переместить текущий индекс из текущей файловой группы в другую файловую группу в SQL Server 2017SQL Server 2017 с помощью среды SQL Server Management StudioSQL Server Management Studio или Transact-SQLTransact-SQL.This topic describes how to move an existing index from its current filegroup to a different filegroup in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

В этом разделеIn This Topic

Перед началомBefore You Begin

ОграниченияLimitations and Restrictions

  • Если таблица имеет кластеризованный индекс, то перемещение кластеризованного индекса в новую файловую группу перемещает в эту файловую группу саму таблицу.If a table has a clustered index, moving the clustered index to a new filegroup moves the table to that filegroup.

  • В среде Среда Management StudioManagement Studioнельзя перемещать индексы, созданные с помощью ограничения UNIQUE или PRIMARY KEY.You cannot move indexes created using a UNIQUE or PRIMARY KEY constraint using Среда Management StudioManagement Studio. Для перемещения этих индексов используйте инструкцию CREATE INDEX с параметром (DROP_EXISTING=ON) в Transact-SQLTransact-SQL.To move these indexes use the CREATE INDEX statement with the (DROP_EXISTING=ON) option in Transact-SQLTransact-SQL.

безопасностьSecurity

PermissionsPermissions

Необходимо разрешение ALTER для таблицы или представления.Requires ALTER permission on the table or view. Пользователь должен быть членом предопределенной роли сервера sysadmin или предопределенных ролей базы данных db_ddladmin и db_owner.User must be a member of the sysadmin fixed server role or the db_ddladmin and db_owner fixed database roles.

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

Перемещение существующего индекса в другую файловую группу с помощью конструктора таблицTo move an existing index to a different filegroup using Table Designer

  1. В обозревателе объектов щелкните знак «плюс», чтобы развернуть базу данных, содержащую таблицу, где находится индекс, который нужно переместить.In Object Explorer, click the plus sign to expand the database that contains the table containing the index that you want to move.

  2. Чтобы развернуть папку Таблицы , щелкните значок «плюс».Click the plus sign to expand the Tables folder.

  3. Щелкните правой кнопкой мыши таблицу, содержащую индекс, который нужно переместить, и выберите пункт Конструктор.Right-click the table containing the index that you want to move and select Design.

  4. В меню Конструктор таблиц выберите пункт Индексы и ключи.On the Table Designer menu, click Indexes/Keys.

  5. Выберите индекс, который нужно переместить.Select the index that you want to move.

  6. В основной сетке разверните узел Спецификация пространства данных.In the main grid, expand Data Space Specification.

  7. Выберите значение Имя файловой группы или схемы секционирования и выберите из списка файловую группу или схему секционирования, в которую нужно переместить индекс.Select Filegroup or Partition Scheme Name and select from the list the filegroup or partition scheme to where you want to move the index.

  8. Щелкните Закрыть.Click Close.

  9. В меню Файл выберите пункт Сохранитьимя_таблицы.On the File menu, select Savetable_name.

Мы слушаем! Если вы обнаружили в этой статье устаревшие или недостоверные сведения, например инструкции или пример кода, сообщите нам.We are listening: If you find something outdated or incorrect in this article, such as a step or a code example, please tell us. Можно воспользоваться кнопкой Эта страница в разделе Отзывы внизу страницы.You can click the This page button in the Feedback section at the bottom of this page. Обычно мы читаем отзывы про материалы по SQL на следующий день.We read every item of feedback about SQL, typically the next day. Благодарим вас.Thanks.

Перемещение существующего индекса в другую файловую группу в обозревателе объектовTo move an existing index to a different filegroup in Object Explorer

  1. В обозревателе объектов щелкните знак «плюс», чтобы развернуть базу данных, содержащую таблицу, где находится индекс, который нужно переместить.In Object Explorer, click the plus sign to expand the database that contains the table containing the index that you want to move.

  2. Чтобы развернуть папку Таблицы , щелкните значок «плюс».Click the plus sign to expand the Tables folder.

  3. Щелкните знак «плюс», чтобы развернуть таблицу, содержащую индекс, который необходимо переместить.Click the plus sign to expand the table containing the index that you want to move.

  4. Чтобы развернуть папку Индексы , щелкните знак «плюс» (+).Click the plus sign to expand the Indexes folder.

  5. Щелкните правой кнопкой мыши индекс, который нужно переместить, и выберите пункт Свойства.Right-click the index that you want to move and select Properties.

  6. В разделе Выбор страницывыберите пункт Хранение.Under Select a page, select Storage.

  7. Выберите файловую группу, в которую необходимо переместить индекс.Select the filegroup in which to move the index.

    если таблица или индекс секционированы, выберите схему секционирования, в которую переместить индекс.If the table or index is partitioned, select the partition scheme in which to move the index. Дополнительные сведения о секционированных индексах см. в разделе Partitioned Tables and Indexes.For more information about partitioned indexes, see Partitioned Tables and Indexes.

    если перемещается кластеризованный индекс, можно использовать обработку в сети.If you are moving a clustered index, you can use online processing. Обработка в сети разрешает одновременный доступ пользователей к основным данным и к некластеризованным индексам в течение операции с индексами.Online processing allows concurrent user access to the underlying data and to nonclustered indexes during the index operation. Дополнительные сведения см. в статье Perform Index Operations Online.For more information, see Perform Index Operations Online.

    На многопроцессорных компьютерах с SQL Server 2017SQL Server 2017можно настроить количество ЦП, используемых для выполнения инструкции индекса, указав значение максимальной степени параллелизма.On multiprocessor computers using SQL Server 2017SQL Server 2017, you can configure the number of processors used to execute the index statement by specifying a maximum degree of parallelism value. Параллельные операции с индексами доступны не во всех выпусках SQL ServerSQL Server.The Parallel indexed operations feature is not available in every edition of SQL ServerSQL Server. Сведения о функциях, поддерживаемых различными выпусками SQL ServerSQL Server, см. в статье "Возможности, поддерживаемые выпусками SQL Server 2016".For a list of features that are supported by the editions of SQL ServerSQL Server, see Features Supported by the Editions of SQL Server 2016. Дополнительные сведения о параллельных операциях с индексами см. в статье Настройка параллельных операций с индексами.For more information about Parallel indexed operations, see Configure Parallel Index Operations.

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

На странице Хранение диалогового окна Свойства индекса ― имя_индекса доступны следующие сведения:The following information is available on the Storage page of the Index Properties - index_name dialog box:

Файловая группаFilegroup
Сохраняет индекс в указанной файловой группе.Stores the index in the specified filegroup. Этот список содержит только стандартные файловые группы (ROW).The list only displays standard (row) filegroups. По умолчанию из этого списка выбирается первичная файловая группа (PRIMARY) текущей базы данных.The default list selection is the PRIMARY filegroup of the database.

Файловая группа файлового потокаFilestream filegroup
Задает файловую группу для данных FILESTREAM.Specifies the filegroup for FILESTREAM data. Этот список содержит только файловые группы FILESTREAM.This list displays only FILESTREAM filegroups. По умолчанию из этого списка выбирается файловая группа PRIMARY FILESTREAM.The default list selection is the PRIMARY FILESTREAM filegroup.

Схема секционированияPartition scheme
Хранит индекс в схеме секционирования.Stores the index in a partition scheme. Если нажать кнопку Схема секционирования , активируется сетка внизу.Clicking Partition Scheme enables the grid below. По умолчанию из списка выбирается схема секционирования, использованная для хранения данных таблицы.The default list selection is the partition scheme that is used for storing the table data. При выборе из списка другой схемы секционирования данные в сетке обновляются.When you select a different partition scheme in the list, the information in the grid is updated.

Параметр схемы секционирования недоступен, если в базе данных нет ни одной схемы секционирования.The partition scheme option is unavailable if there are no partition schemes in the database.

Схема секционирования файлового потокаFilestream partition scheme
Задает схему секционирования для данных FILESTREAM.Specifies the partition scheme for FILESTREAM data. Схема секционирования должна быть симметрична схеме, указанной в параметре Схема секционирования .The partition scheme must be symmetric with the scheme that is specified in the Partition scheme option.

Если таблица не секционирована, это поле пусто.If the table is not partitioned, the field is blank.

Параметр схемы секционированияPartition Scheme Parameter
Отображает имя столбца, участвующего в схеме секционирования.Displays the name of the column that participates in the partition scheme.

Столбец таблицыTable Column
Выберите таблицу или представление для сопоставления схеме секционирования.Select the table or view to map to the partition scheme.

Тип данных столбцаColumn Data Type
Выводит сведения о типах данных для данного столбца.Displays data type information about the column.

Примечание

Если это вычисляемый столбец, в поле Тип данных столбца отображается отметка "вычисляемый столбец".If the table column is a computed column, Column Data Type displays "computed column."

Разрешить обработку в сети DML-инструкций во время переноса индексаAllow online processing of DML statements while moving the index
Параметр дает пользователям возможность получать доступ к данным базовой таблицы или кластеризованного индекса, а также к любым связанным с ними некластеризованным индексам при операциях с индексами.Allows users to access the underlying table or clustered index data and any associated nonclustered indexes during the index operation.

Примечание

Этот параметр недоступен для XML-индексов, а также в случае, если индекс является отключенным кластеризованным индексом.This option is not available for XML indexes, or if the index is a disabled clustered index.

Укажите максимальную степень параллелизмаSet maximum degree of parallelism
Ограничивает число процессоров, используемых в одновременном исполнении планов.Limits the number of processors to use during parallel plan execution. При значении по умолчанию 0 используется реальное число доступных ЦП.The default value, 0, uses the actual number of available CPUs. При установке значения 1 создание параллельных планов становится невозможным; при установке значения больше 1 ограничивается максимальное число процессоров, используемых для выполнения одного запроса.Setting the value to 1 suppresses parallel plan generation; setting the value to a number greater than 1 restricts the maximum number of processors used by a single query execution. Этот параметр становится доступным только в случае, если диалоговое окно находится в состоянии Перестроение или Повторное создание .This option only becomes available if the dialog box is in the Rebuild or Recreate state.

Примечание

Если задано значение, превышающее число доступных ЦП, используется фактическое число доступных ЦП.If a value greater than the number of available CPUs is specified, the actual number of available CPUs is used.

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

Перемещение существующего индекса в другую файловую группуTo move an existing index to a different filegroup

  1. В обозревателе объектовподключитесь к экземпляру компонента Компонент Database EngineDatabase Engine.In Object Explorer, connect to an instance of Компонент Database EngineDatabase Engine.

  2. На стандартной панели выберите пункт Создать запрос.On the Standard bar, click New Query.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.Copy and paste the following example into the query window and click Execute.

    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\MSSQL13\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).For more information, see CREATE INDEX (Transact-SQL).