Compartir a través de


Mover un índice existente a un grupo de archivos diferente

Se aplica a: SQL Server Azure SQL Managed Instance

En este tema se describe cómo mover un índice existente de su grupo de archivos actual a otro distinto en SQL Server mediante SQL Server Management Studio o Transact-SQL.

Para ver consideraciones de diseño como, por ejemplo, por qué podría querer colocar un índice no agrupado en un grupo de archivos diferente, consulte Colocación de índices en grupos de archivos o esquemas de particiones.

Antes de empezar

Limitaciones y restricciones

  • Si una tabla base tiene un índice clúster, al mover el índice clúster a un nuevo grupo de archivos se mueve también la tabla a ese grupo de archivos.

  • No puede mover los índices creados mediante una restricción UNIQUE o PRIMARY KEY con Management Studio. Para mover estos índices, use la instrucción CREATE INDEX con la opción (DROP_EXISTING=ON) en Transact-SQL.

Seguridad

Permisos

Requiere el permiso ALTER en la tabla o la vista. El usuario debe ser miembro del rol fijo de servidor sysadmin o de los roles fijos de base de datos db_ddladmin y db_owner .

Uso de SQL Server Management Studio

Para mover un índice existente a un grupo de archivos diferente usando el Diseñador de tablas

  1. En el Explorador de objetos, haga clic en el signo más para expandir la base de datos que contiene la tabla que contiene el índice que desea mover.

  2. Haga clic en el signo más para expandir la carpeta Tablas .

  3. Haga clic con el botón derecho en la tabla que contiene el índice que quiere mover y seleccione Diseño.

  4. En el menú Diseñador de tablas , haga clic en Índices o claves.

  5. Seleccione el índice que desea mover.

  6. En la cuadrícula principal, expanda Especificación de espacio de datos.

  7. Seleccione Nombre de esquema de partición o grupo de archivos y seleccione en la lista el esquema de grupo de archivos o de partición al que desea mover el índice.

  8. Haga clic en Cerrar.

  9. En el menú Archivo , seleccione Guardarnombre_tabla.

Para mover un índice existente a un grupo de archivos distinto en el Explorador de objetos

  1. En el Explorador de objetos, haga clic en el signo más para expandir la base de datos que contiene la tabla que contiene el índice que desea mover.

  2. Haga clic en el signo más para expandir la carpeta Tablas .

  3. Haga clic en el signo más para expandir la tabla que contiene el índice que desea mover.

  4. Haga clic en el signo más para expandir la carpeta Índices .

  5. Haga clic con el botón derecho en el índice que quiere mover y seleccione Propiedades.

  6. En Seleccionar una página, seleccione Almacenamiento.

  7. Seleccione el grupo de archivos al que desee mover el índice.

    Si la tabla o el índice tienen particiones, seleccione el esquema de particiones al que desee mover el índice. Para obtener más información acerca de los índices con particiones, vea Partitioned Tables and Indexes.

    Si lo que desea mover es un índice clúster, puede utilizar el procesamiento en línea. El procesamiento en línea permite que varios usuarios obtengan acceso al mismo tiempo a los datos subyacentes, así como a índices no clúster durante la operación de índice. Para más información, consulte Perform Index Operations Online.

    En equipos multiprocesador que usan SQL Server, puede configurar el número de procesadores que desea usar para ejecutar la instrucción de índice; para ello, especifique un valor máximo de grado de paralelismo. La característica de operaciones indexadas en paralelo no está disponible en todas las ediciones de SQL Server. Para obtener una lista de las características admitidas por las ediciones de SQL Server, vea Características compatibles con las ediciones de SQL Server 2016. Para obtener más información sobre las operaciones indexadas en paralelo, vea Configurar operaciones de índice en paralelo.

  8. Haga clic en OK.

La información siguiente está disponible en la página Almacenamiento del cuadro de diálogo Propiedades del índice - nombre de índice:

Grupo de archivos
Almacena el índice en el grupo de archivos especificado. En la lista solo se muestran los grupos de archivos (fila) estándar. La selección de lista predeterminada es el grupo de archivos PRIMARY de la base de datos.

Grupo de archivos de flujo de archivos
Especifica el grupo de archivos para los datos FILESTREAM. En esta lista solo se muestran los grupos de archivos FILESTREAM. La selección de lista predeterminada es el grupo de archivos PRIMARY FILESTREAM.

Esquema de partición
Almacena el índice en un esquema de partición. Al hacer clic en Esquema de partición , se habilita la cuadrícula que se muestra a continuación. La selección de lista predeterminada es el esquema de partición utilizado para almacenar los datos de la tabla. Si se selecciona un esquema de partición distinto de la lista, se actualizará la información en la cuadrícula.

La opción de esquema de partición no estará disponible si no hay ningún esquema de partición en la base de datos.

Esquema de partición Filestream
Especifica el esquema de partición de los datos FILESTREAM. El esquema de partición debe ser simétrico al esquema especificado en la opción Esquema de partición .

Si no tiene particiones, el campo está en blanco.

Parámetro del esquema de partición
Muestra el nombre de la columna que participa en el esquema de partición.

Columna de la tabla
Seleccione la tabla o vista que se asignará al esquema de partición.

Tipo de datos de la columna
Muestra información de tipo de datos de la columna.

Nota:

Si la columna de tabla es una columna calculada, Tipo de datos de la columna mostrará "columna calculada".

Permitir procesamiento en línea de instrucciones DML al mover el índice
Permite a los usuarios obtener acceso a los datos de la tabla subyacente o del índice clúster, así como a todos los índices no clúster asociados durante las operaciones de índice.

Nota:

Esta opción no estará disponible para los índices XML ni cuando el índice sea un índice clúster deshabilitado.

Establecer grado máximo de paralelismo
Limita el número de procesadores que se van a utilizar durante la ejecución de planes paralelos. El valor predeterminado es 0, que utiliza el número real de CPU disponibles. Si el valor se establece en 1, se suprime la generación de planes paralelos; si el valor se establece en un número mayor que 1, se restringe el número máximo de procesadores que se utilizan en la ejecución de una única consulta. Esta opción solo está disponible si el cuadro de diálogo está en los estados Volver a generar o Volver a crear .

Nota:

Si especifica un valor superior al número de CPU disponibles, se utilizará el número real de CPU disponibles.

Usar Transact-SQL

Para mover un índice existente a un grupo de archivos diferente

  1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.

  2. En la barra de Estándar, haga clic en Nueva consulta.

  3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar.

    USE AdventureWorks2022;  
    GO  
    -- Creates the TransactionsFG1 filegroup on the AdventureWorks2022 database  
    ALTER DATABASE AdventureWorks2022  
    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 AdventureWorks2022   
    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  
    

Pasos siguientes

Para más información, consulte CREATE INDEX (Transact-SQL).

Guía de diseño y de arquitectura de índices de SQL Server