DROP INDEX (Transact-SQL)DROP INDEX (Transact-SQL)

SE APLICA A: síSQL Server síAzure SQL Database síAzure Synapse Analytics (SQL DW) síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Quita uno o más índices XML, filtrados, espaciales o relacionales de la base de datos actual.Removes one or more relational, spatial, filtered, or XML indexes from the current database. Puede quitar un índice clúster y mover la tabla resultante a otro grupo de archivos o esquema de partición en una sola transacción especificando la opción MOVE TO.You can drop a clustered index and move the resulting table to another filegroup or partition scheme in a single transaction by specifying the MOVE TO option.

La instrucción DROP INDEX no es aplicable a los índices creados mediante la definición de restricciones PRIMARY KEY y UNIQUE.The DROP INDEX statement does not apply to indexes created by defining PRIMARY KEY or UNIQUE constraints. Para quitar la restricción y el índice correspondiente, use ALTER TABLE con la cláusula DROP CONSTRAINT.To remove the constraint and corresponding index, use ALTER TABLE with the DROP CONSTRAINT clause.

Importante

La sintaxis definida en <drop_backward_compatible_index> dejará de incluirse en una futura versión de MicrosoftMicrosoftSQL ServerSQL Server.The syntax defined in <drop_backward_compatible_index> will be removed in a future version of MicrosoftMicrosoftSQL ServerSQL Server. Evite utilizar esta sintaxis en nuevos trabajos de programación y tenga previsto modificar las aplicaciones que actualmente la utilizan.Avoid using this syntax in new development work, and plan to modify applications that currently use the feature. En su lugar, utilice la sintaxis especificada en <drop_relational_or_xml_index>.Use the syntax specified under <drop_relational_or_xml_index> instead. Los índices XML no se pueden quitar utilizando la sintaxis compatible con versiones anteriores.XML indexes cannot be dropped using backward compatible syntax.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

-- Syntax for SQL Server (All options except filegroup and filestream apply to Azure SQL Database.)  
  
DROP INDEX [ IF EXISTS ]   
{ <drop_relational_or_xml_or_spatial_index> [ ,...n ]   
| <drop_backward_compatible_index> [ ,...n ]  
}  
  
<drop_relational_or_xml_or_spatial_index> ::=  
    index_name ON <object>   
    [ WITH ( <drop_clustered_index_option> [ ,...n ] ) ]  
  
<drop_backward_compatible_index> ::=  
    [ owner_name. ] table_or_view_name.index_name  
  
<object> ::=  
{ database_name.schema_name.table_or_view_name | schema_name.table_or_view_name | table_or_view_name }  
  
<drop_clustered_index_option> ::=  
{  
    MAXDOP = max_degree_of_parallelism  
  | ONLINE = { ON | OFF }  
  | MOVE TO { partition_scheme_name ( column_name )   
            | filegroup_name  
            | "default"   
            }  
  [ FILESTREAM_ON { partition_scheme_name   
            | filestream_filegroup_name   
            | "default" } ]  
}  
-- Syntax for Azure SQL Database  
  
DROP INDEX  
{ <drop_relational_or_xml_or_spatial_index> [ ,...n ]   
}  
  
<drop_relational_or_xml_or_spatial_index> ::=   
    index_name ON <object>  
  
<object> ::=   
{ database_name.schema_name.table_or_view_name | schema_name.table_or_view_name | table_or_view_name }  
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse  
  
DROP INDEX index_name ON { database_name.schema_name.table_name | schema_name.table_name | table_name }  
[;]  

ArgumentosArguments

IF EXISTSIF EXISTS
Se aplica a: SQL ServerSQL Server (desde SQL Server 2016 (13.x)SQL Server 2016 (13.x) hasta la versión actual).Applies to: SQL ServerSQL Server ( SQL Server 2016 (13.x)SQL Server 2016 (13.x) through current version).

Quita el índice condicionalmente solo si ya existe.Conditionally drops the index only if it already exists.

index_nameindex_name
Es el nombre del índice que se va a quitar.Is the name of the index to be dropped.

database_namedatabase_name
Es el nombre de la base de datos.Is the name of the database.

schema_nameschema_name
Es el nombre del esquema al que pertenece la tabla o la vista.Is the name of the schema to which the table or view belongs.

table_or_view_nametable_or_view_name
Es el nombre de la tabla o vista asociada al índice.Is the name of the table or view associated with the index. Los índices espaciales solo se admiten en tablas.Spatial indexes are supported only on tables.

Para mostrar un informe de los índices en un objeto, use la vista de catálogo sys.indexes.To display a report of the indexes on an object, use the sys.indexes catalog view.

Azure SQL Database admite el formato de nombre de tres partes nombre_basededatos.[nombre_esquema].nombre_objeto cuando nombre_basededatos es la base de datos actual o tempdb y nombre_objeto comienza con #.Azure SQL Database supports the three-part name format database_name.[schema_name].object_name when the database_name is the current database or the database_name is tempdb and the object_name starts with #.

<drop_clustered_index_option><drop_clustered_index_option>
Se aplica a: SQL Server 2008SQL Server 2008 y versiones posteriores, SQL DatabaseSQL DatabaseApplies to: SQL Server 2008SQL Server 2008 and later, SQL DatabaseSQL Database.

Controla las opciones de los índices clúster.Controls clustered index options. Estas opciones no se pueden utilizar con otros tipos de índices.These options cannot be used with other index types.

MAXDOP = max_degree_of_parallelismMAXDOP = max_degree_of_parallelism
Se aplica a: SQL Server 2008SQL Server 2008 y versiones posteriores, SQL DatabaseSQL Database (solo los niveles de rendimiento P2 y P3)Applies to: SQL Server 2008SQL Server 2008 and later, SQL DatabaseSQL Database (Performance Levels P2 and P3 only).

Reemplaza la opción de configuración de max_degree_of_parallelism mientras dure la operación de índice.Overrides the max degree of parallelism configuration option for the duration of the index operation. Para obtener más información, vea Establecer la opción de configuración del servidor Grado máximo de paralelismo.For more information, see Configure the max degree of parallelism Server Configuration Option. Utilice MAXDOP para establecer un límite para el número de procesadores utilizados en la ejecución de un plan paralelo.Use MAXDOP to limit the number of processors used in a parallel plan execution. El máximo es 64 procesadores.The maximum is 64 processors.

Importante

MAXDOP no se admite en índices espaciales o índices XML.MAXDOP is not allowed for spatial indexes or XML indexes.

max_degree_of_parallelism puede tener estos valores:max_degree_of_parallelism can be:

11
Suprime la generación de planes paralelos.Suppresses parallel plan generation.

>1>1
Restringe el número máximo de procesadores utilizados en una operación de índice paralelo para el número especificado.Restricts the maximum number of processors used in a parallel index operation to the specified number.

0 (predeterminado)0 (default)
Usa el número real de procesadores o menos, según la carga de trabajo actual del sistema.Uses the actual number of processors or fewer based on the current system workload.

Para obtener más información, vea Configurar operaciones de índice en paralelo.For more information, see Configure Parallel Index Operations.

Nota

Las operaciones de índices en paralelo no están disponibles en todas las ediciones de SQL ServerSQL Server.Parallel index operations are not available in every edition of SQL ServerSQL Server. Para obtener una lista de las características admitidas por las ediciones de SQL ServerSQL Server, vea Características compatibles con las ediciones de SQL Server 2016.For a list of features that are supported by the editions of SQL ServerSQL Server, see Editions and Supported Features for SQL Server 2016.

ONLINE = ON | OFFONLINE = ON | OFF
Se aplica a: SQL Server 2008SQL Server 2008 y versiones posteriores, Base de datos SQL de AzureAzure SQL DatabaseApplies to: SQL Server 2008SQL Server 2008 and later, Base de datos SQL de AzureAzure SQL Database.

Especifica si las tablas subyacentes y los índices asociados están disponibles para realizar consultas y modificar datos durante la operación de índice.Specifies whether underlying tables and associated indexes are available for queries and data modification during the index operation. El valor predeterminado es OFF.The default is OFF.

ONON
No se mantienen los bloqueos de tabla a largo plazo.Long-term table locks are not held. Esto permite que continúen las consultas o actualizaciones en la tabla subyacente.This allows queries or updates to the underlying table to continue.

OFFOFF
Se aplican bloqueos de tabla y la tabla deja de estar disponible mientras dure la operación con índices.Table locks are applied and the table is unavailable for the duration of the index operation.

La opción ONLINE solo se puede especificar cuando se quitan índices clúster.The ONLINE option can only be specified when you drop clustered indexes. Para obtener más información, vea la sección Comentarios.For more information, see the Remarks section.

Nota

Las operaciones de índices en línea no están disponibles en todas las ediciones de SQL ServerSQL Server.Online index operations are not available in every edition of SQL ServerSQL Server. Para obtener una lista de las características admitidas por las ediciones de SQL ServerSQL Server, vea Características compatibles con las ediciones de SQL Server 2016.For a list of features that are supported by the editions of SQL ServerSQL Server, see Editions and Supported Features for SQL Server 2016.

MOVE TO { partition_scheme_name ( column_name ) | filegroup_name | " default "MOVE TO { partition_scheme_name(column_name) | filegroup_name | " default "
Válido para : SQL Server 2008SQL Server 2008 y versiones posteriores.Applies to: SQL Server 2008SQL Server 2008 and later. SQL DatabaseSQL Database admite "default" como el nombre del grupo de archivos.supports "default" as the filegroup name.

Especifica la ubicación donde se moverán las filas de datos que están actualmente en el nivel hoja del índice clúster.Specifies a location to move the data rows that currently are in the leaf level of the clustered index. Los datos se mueven a la nueva ubicación en forma de montón.The data is moved to the new location in the form of a heap. Se puede especificar un esquema de partición o un grupo de archivos como la nueva ubicación, pero es necesario que ya existan.You can specify either a partition scheme or filegroup as the new location, but the partition scheme or filegroup must already exist. MOVE TO no es válido para vistas indizadas o índices no clúster.MOVE TO is not valid for indexed views or nonclustered indexes. Si no se especifica ningún esquema de partición o grupo de archivos, la tabla resultante se colocará en el mismo esquema de partición o grupo de archivos que se definió para el índice clúster.If a partition scheme or filegroup is not specified, the resulting table will be located in the same partition scheme or filegroup as was defined for the clustered index.

Si se quita un índice clúster mediante MOVE TO, se vuelven a generar todos los índices no clúster de la tabla base, pero permanecen en sus grupos de archivos o esquemas de partición originales.If a clustered index is dropped by using MOVE TO, any nonclustered indexes on the base table are rebuilt, but they remain in their original filegroups or partition schemes. Si la tabla base se mueve a un grupo de archivos o esquema de partición diferente, los índices no clúster no se mueven para hacerlos coincidir con la nueva ubicación de la tabla base (montón).If the base table is moved to a different filegroup or partition scheme, the nonclustered indexes are not moved to coincide with the new location of the base table (heap). Por lo tanto, aunque los índices no clúster estuvieran previamente alineados con el índice clúster, es posible que ya no lo estén con el montón.Therefore, even if the nonclustered indexes were previously aligned with the clustered index, they might no longer be aligned with the heap. Para más información sobre la alineación de índices con particiones, vea Tablas e índices con particiones.For more information about partitioned index alignment, see Partitioned Tables and Indexes.

partition_scheme_name ( column_name )partition_scheme_name ( column_name )
Se aplica a: SQL Server 2008SQL Server 2008 y versiones posteriores, SQL DatabaseSQL DatabaseApplies to: SQL Server 2008SQL Server 2008 and later, SQL DatabaseSQL Database.

Especifica un esquema de partición como la ubicación de la tabla resultante.Specifies a partition scheme as the location for the resulting table. Es necesario que el esquema de partición se haya creado previamente ejecutando CREATE PARTITION SCHEME o ALTER PARTITION SCHEME.The partition scheme must have already been created by executing either CREATE PARTITION SCHEME or ALTER PARTITION SCHEME. Si no se especifica ninguna ubicación y la tabla tiene particiones, la tabla se incluye en el mismo esquema de partición que el índice clúster existente.If no location is specified and the table is partitioned, the table is included in the same partition scheme as the existing clustered index.

El nombre de columna del esquema no se limita a las columnas de la definición del índice.The column name in the scheme is not restricted to the columns in the index definition. Se puede especificar cualquier columna de la tabla base.Any column in the base table can be specified.

filegroup_namefilegroup_name
Válido para : SQL Server 2008SQL Server 2008 y versiones posteriores.Applies to: SQL Server 2008SQL Server 2008 and later.

Especifica un grupo de archivos como la ubicación de la tabla resultante.Specifies a filegroup as the location for the resulting table. Si no se especifica ninguna ubicación y la tabla no tiene particiones, la tabla resultante se incluye en el mismo grupo de archivos que el índice clúster.If no location is specified and the table is not partitioned, the resulting table is included in the same filegroup as the clustered index. El grupo de archivos debe existir previamente.The filegroup must already exist.

" default "" default "
Especifica la ubicación predeterminada de la tabla resultante.Specifies the default location for the resulting table.

Nota

En este contexto, el valor predeterminado no es una palabra clave.In this context, default is not a keyword. Es un identificador para el grupo de archivos predeterminado y debe delimitarse, como en MOVE TO " default " o MOVE TO [ default ] .It is an identifier for the default filegroup and must be delimited, as in MOVE TO " default " or MOVE TO [ default ]. Si se especifica el parámetro " default " , la opción QUOTED_IDENTIFIER debe establecerse en ON para la sesión actual.If " default " is specified, the QUOTED_IDENTIFIER option must be set ON for the current session. Esta es la configuración predeterminada.This is the default setting. Para obtener más información, vea SET QUOTED_IDENTIFIER (Transact-SQL).For more information, see SET QUOTED_IDENTIFIER (Transact-SQL).

FILESTREAM_ON { partition_scheme_name | filestream_filegroup_name | " default " }FILESTREAM_ON { partition_scheme_name | filestream_filegroup_name | " default " }
Válido para : SQL Server 2008SQL Server 2008 y versiones posteriores.Applies to: SQL Server 2008SQL Server 2008 and later.

Especifica la ubicación donde se moverá la tabla FILESTREAM que está actualmente en el nivel hoja del índice clúster.Specifies a location to move the FILESTREAM table that currently is in the leaf level of the clustered index. Los datos se mueven a la nueva ubicación en forma de montón.The data is moved to the new location in the form of a heap. Se puede especificar un esquema de partición o un grupo de archivos como la nueva ubicación, pero es necesario que ya existan.You can specify either a partition scheme or filegroup as the new location, but the partition scheme or filegroup must already exist. FILESTREAM ON no es válida para vistas indizadas ni índices no clúster.FILESTREAM ON is not valid for indexed views or nonclustered indexes. Si no se especifica un esquema de partición, los datos se ubicarán en el mismo esquema de partición que se definió para el índice clúster.If a partition scheme is not specified, the data will be located in the same partition scheme as was defined for the clustered index.

partition_scheme_namepartition_scheme_name
Especifica un esquema de partición de los datos FILESTREAM.Specifies a partition scheme for the FILESTREAM data. Es necesario que el esquema de partición se haya creado previamente ejecutando CREATE PARTITION SCHEME o ALTER PARTITION SCHEME.The partition scheme must have already been created by executing either CREATE PARTITION SCHEME or ALTER PARTITION SCHEME. Si no se especifica ninguna ubicación y la tabla tiene particiones, la tabla se incluye en el mismo esquema de partición que el índice clúster existente.If no location is specified and the table is partitioned, the table is included in the same partition scheme as the existing clustered index.

Si especifica un esquema de partición para MOVE TO, se debe utilizar el mismo esquema de partición para FILESTREAM ON.If you specify a partition scheme for MOVE TO, you must use the same partition scheme for FILESTREAM ON.

filestream_filegroup_namefilestream_filegroup_name
Especifica un grupo de archivos FILESTREAM de los datos FILESTREAM.Specifies a FILESTREAM filegroup for FILESTREAM data. Si no se especifica ninguna ubicación y la tabla no tiene particiones, los datos se incluyen en el grupo de archivos FILESTREAM predeterminado.If no location is specified and the table is not partitioned, the data is included in the default FILESTREAM filegroup.

" default "" default "
Especifica la ubicación predeterminada de los datos FILESTREAM.Specifies the default location for the FILESTREAM data.

Nota

En este contexto, el valor predeterminado no es una palabra clave.In this context, default is not a keyword. Es un identificador para el grupo de archivos predeterminado y debe delimitarse, como en MOVE TO " default " o MOVE TO [ default ] .It is an identifier for the default filegroup and must be delimited, as in MOVE TO " default " or MOVE TO [ default ]. Si se especifica "default", la opción QUOTED_IDENTIFIER debe tener el valor ON para la sesión actual.If "default" is specified, the QUOTED_IDENTIFIER option must be ON for the current session. Esta es la configuración predeterminada.This is the default setting. Para obtener más información, vea SET QUOTED_IDENTIFIER (Transact-SQL).For more information, see SET QUOTED_IDENTIFIER (Transact-SQL).

NotasRemarks

Cuando se quita un índice no clúster, se quita la definición del índice de los metadatos y las páginas de datos del índice (árbol b) se quitan de los archivos de la base de datos.When a nonclustered index is dropped, the index definition is removed from metadata and the index data pages (the B-tree) are removed from the database files. Cuando se quita un índice clúster, se quita la definición del índice de los metadatos y las filas de datos que se almacenaron en el nivel hoja del índice clúster se almacenan en la tabla resultante no ordenada, un montón.When a clustered index is dropped, the index definition is removed from metadata and the data rows that were stored in the leaf level of the clustered index are stored in the resulting unordered table, a heap. Se recuperará todo el espacio anteriormente ocupado por el índice.All the space previously occupied by the index is regained. Después, se puede utilizar este espacio para cualquier objeto de base de datos.This space can then be used for any database object.

Un índice no se puede quitar si el grupo de archivos en el que se encuentra está sin conexión o se ha definido como de solo lectura.An index cannot be dropped if the filegroup in which it is located is offline or set to read-only.

Cuando se quita el índice clúster de una vista indizada, automáticamente se quitan todos los índices no clúster y las estadísticas creadas automáticamente en la misma vista.When the clustered index of an indexed view is dropped, all nonclustered indexes and auto-created statistics on the same view are automatically dropped. Las estadísticas creadas manualmente no se quitan.Manually created statistics are not dropped.

La sintaxis table_or_view_name . index_name se mantiene por compatibilidad con versiones anteriores.The syntax table_or_view_name.index_name is maintained for backward compatibility. Los índices XML o espaciales no se pueden quitar utilizando la sintaxis compatible con versiones anteriores.An XML index or spatial index cannot be dropped by using the backward compatible syntax.

Cuando se quitan índices con 128 extensiones o más, el Motor de base de datosDatabase Engine difiere las cancelaciones de asignación de páginas reales y sus bloqueos asociados hasta que se confirma la transacción.When indexes with 128 extents or more are dropped, the Motor de base de datosDatabase Engine defers the actual page deallocations, and their associated locks, until after the transaction commits.

A veces, los índices se quitan y se vuelven crear para reorganizarlos o volver a generarlos, por ejemplo, para aplicar un nuevo valor de factor de relleno o para reorganizar los datos después de una carga masiva.Sometimes indexes are dropped and re-created to reorganize or rebuild the index, such as to apply a new fill factor value or to reorganize data after a bulk load. Para ello es más eficaz usar ALTER INDEX, especialmente en el caso de los índices clúster.To do this, using ALTER INDEXis more efficient, especially for clustered indexes. ALTER INDEX REBUILD incluye optimizaciones para impedir la sobrecarga que representa la regeneración de los índices no clúster.ALTER INDEX REBUILD has optimizations to prevent the overhead of rebuilding the nonclustered indexes.

Usar opciones con DROP INDEXUsing Options with DROP INDEX

Puede establecer las siguientes opciones de índice cuando quite un índice clúster: MAXDOP, ONLINE y MOVE TO.You can set the following index options when you drop a clustered index: MAXDOP, ONLINE, and MOVE TO.

Utilice MOVE TO para quitar el índice clúster y mover la tabla resultante a otro grupo de archivos o esquema de partición en una sola transacción.Use MOVE TO to drop the clustered index and move the resulting table to another filegroup or partition scheme in a single transaction.

Cuando se especifica ONLINE = ON, las consultas y modificaciones de los datos subyacentes e índices no clúster asociados no se bloquean con la transacción DROP INDEX.When you specify ONLINE = ON, queries and modifications to the underlying data and associated nonclustered indexes are not blocked by the DROP INDEX transaction. No se puede quitar más de un índice clúster en línea al mismo tiempo.Only one clustered index can be dropped online at a time. Para obtener una descripción completa de la opción ONLINE, vea CREATE INDEX (Transact-SQL).For a complete description of the ONLINE option, see CREATE INDEX (Transact-SQL).

No se puede quitar un índice clúster en línea si el índice está deshabilitado en una vista o contiene columnas de tipo text, ntext, image, varchar(max) , nvarchar(max) , varbinary(max) o xml en las filas de datos de nivel hoja.You cannot drop a clustered index online if the index is disabled on a view, or contains text, ntext, image, varchar(max), nvarchar(max), varbinary(max), or xml columns in the leaf-level data rows.

Para utilizar las opciones ONLINE = ON y MOVE TO se requiere más espacio temporal en el disco.Using the ONLINE = ON and MOVE TO options requires additional temporary disk space.

Después de quitar un índice, el montón resultante aparece en la vista de catálogo sys.indexes con NULL en la columna name.After an index is dropped, the resulting heap appears in the sys.indexes catalog view with NULL in the name column. Para ver el nombre de la tabla, combine sys.indexes con sys.tables en object_id.To view the table name, join sys.indexes with sys.tables on object_id. Dispone de una consulta de ejemplo en el ejemplo D.For an example query, see example D.

En los equipos con varios procesadores que ejecutan SQL Server 2005 Enterprise EditionSQL Server 2005 Enterprise Edition o posterior, DROP INDEX puede utilizar más procesadores para realizar las operaciones de recorrido y ordenación asociadas a la eliminación del índice clúster, al igual que hacen otras consultas.On multiprocessor computers that are running SQL Server 2005 Enterprise EditionSQL Server 2005 Enterprise Edition or later, DROP INDEX may use more processors to perform the scan and sort operations associated with dropping the clustered index, just like other queries do. Puede configurar de forma manual el número de procesadores que se utilizan para ejecutar la instrucción DROP INDEX especificando la opción de índice MAXDOP.You can manually configure the number of processors that are used to run the DROP INDEX statement by specifying the MAXDOP index option. Para obtener más información, vea Configurar operaciones de índice en paralelo.For more information, see Configure Parallel Index Operations.

Cuando se quita un índice clúster, las particiones del montón correspondientes retienen su valor de compresión de datos, a menos que se modifique el esquema de partición.When a clustered index is dropped, the corresponding heap partitions retain their data compression setting unless the partitioning scheme is modified. Si se cambia el esquema de la partición, todas las particiones se generaran en un estado sin comprimir (DATA_COMPRESSION = NONE).If the partitioning scheme is changed, all partitions are rebuilt to an uncompressed state (DATA_COMPRESSION = NONE). Para quitar un índice clúster y cambiar el esquema de la partición, es necesario llevar a cabo los dos pasos siguientes:To drop a clustered index and change the partitioning scheme requires the following two steps:

  1. Quitar el índice clúster.Drop the clustered index.

  2. Modificar la tabla utilizando una opción ALTER TABLE... REBUILD... que especifique la opción de compresión.Modify the table by using an ALTER TABLE ... REBUILD ... option specifying the compression option.

Cuando se quita un índice clúster OFFLINE, solo se quitan los niveles superiores de índices clústeres, por lo que la operación es realmente rápida.When a clustered index is dropped OFFLINE, only the upper levels of clustered indexes are removed; therefore, the operation is quite fast. Cuando se quita un índice clúster ONLINE, SQL ServerSQL Server vuelve a generar el montón dos veces, una vez para el paso 1 y otra para el paso 2.When a clustered index is dropped ONLINE, SQL ServerSQL Server rebuilds the heap two times, once for step 1 and once for step 2. Para más información sobre la compresión de datos, vea Compresión de datos.For more information about data compression, see Data Compression.

Índices XMLXML Indexes

No se pueden especificar opciones al quitar un índice XML.Options cannot be specified when you drop anXML index. Además, no se puede usar la sintaxis table_or_view_name . index_name.Also, you cannot use the table_or_view_name.index_name syntax. Cuando se quita un índice XML principal, todos los índices XML secundarios asociados se quitan automáticamente.When a primary XML index is dropped, all associated secondary XML indexes are automatically dropped. Para obtener más información, consulte Índices XML (SQL Server).For more information, see XML Indexes (SQL Server).

Índices espacialesSpatial Indexes

Los índices espaciales solo se admiten en tablas.Spatial indexes are supported only on tables. Cuando se quita un índice espacial, no se puede especificar ninguna opción ni usar . index_name.When you drop a spatial index, you cannot specify any options or use .index_name. La sintaxis correcta es la siguiente:The correct syntax is as follows:

DROP INDEX spatial_index_name ON spatial_table_name;DROP INDEX spatial_index_name ON spatial_table_name;

Para más información sobre los índices espaciales, vea Información general sobre los índices espaciales.For more information about spatial indexes, see Spatial Indexes Overview.

PermisosPermissions

Para ejecutar DROP INDEX, se requiere, como mínimo, el permiso ALTER en la tabla o vista.To execute DROP INDEX, at a minimum, ALTER permission on the table or view is required. Este permiso se concede de forma predeterminada al rol fijo de servidor sysadmin y a los roles fijos de base de datos db_ddladmin y db_owner .This permission is granted by default to the sysadmin fixed server role and the db_ddladmin and db_owner fixed database roles.

EjemplosExamples

A.A. Quitar un índiceDropping an index

En el siguiente ejemplo se elimina el índice IX_ProductVendor_VendorID en la tabla ProductVendor de la base de datos AdventureWorks2012AdventureWorks2012.The following example deletes the index IX_ProductVendor_VendorID on the ProductVendor table in the AdventureWorks2012AdventureWorks2012 database.

DROP INDEX IX_ProductVendor_BusinessEntityID   
    ON Purchasing.ProductVendor;  
GO  

B.B. Quitar varios índicesDropping multiple indexes

En el ejemplo siguiente se eliminan dos índices en una sola transacción de la base de datos AdventureWorks2012AdventureWorks2012.The following example deletes two indexes in a single transaction in the AdventureWorks2012AdventureWorks2012 database.

DROP INDEX  
    IX_PurchaseOrderHeader_EmployeeID ON Purchasing.PurchaseOrderHeader,  
    IX_Address_StateProvinceID ON Person.Address;  
GO  

C.C. Quitar un índice clúster en línea y establecer la opción MAXDOPDropping a clustered index online and setting the MAXDOP option

En el ejemplo siguiente se elimina un índice clúster con la opción ONLINE establecida en ON y MAXDOP establecida en 8.The following example deletes a clustered index with the ONLINE option set to ON and MAXDOP set to 8. Dado que no se ha especificado la opción MOVE TO, la tabla resultante se almacena en el mismo grupo de archivos que el índice.Because the MOVE TO option was not specified, the resulting table is stored in the same filegroup as the index. En este ejemplo se usa la base de datos AdventureWorks2012AdventureWorks2012.This examples uses the AdventureWorks2012AdventureWorks2012 database

Se aplica a: SQL Server 2008SQL Server 2008 y versiones posteriores, SQL DatabaseSQL DatabaseApplies to: SQL Server 2008SQL Server 2008 and later, SQL DatabaseSQL Database.

DROP INDEX AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate   
    ON Production.BillOfMaterials WITH (ONLINE = ON, MAXDOP = 2);  
GO  

D.D. Quitar un índice clúster en línea y mover la tabla a un nuevo grupo de archivosDropping a clustered index online and moving the table to a new filegroup

En el ejemplo siguiente se elimina un índice clúster en línea y se mueve la tabla resultante (montón) al grupo de archivos NewGroup mediante la cláusula MOVE TO .The following example deletes a clustered index online and moves the resulting table (heap) to the filegroup NewGroup by using the MOVE TO clause. Las vistas de catálogo sys.indexes, sys.tablesy sys.filegroups se consultan para comprobar la ubicación del índice y la tabla en los grupos de archivos antes y después del desplazamiento.The sys.indexes, sys.tables, and sys.filegroups catalog views are queried to verify the index and table placement in the filegroups before and after the move. (A partir de SQL Server 2016 (13.x)SQL Server 2016 (13.x) se puede usar la sintaxis DROP INDEX IF EXISTS).(Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x) you can use the DROP INDEX IF EXISTS syntax.)

Válido para : SQL Server 2008SQL Server 2008 y versiones posteriores.Applies to: SQL Server 2008SQL Server 2008 and later.

--Create a clustered index on the PRIMARY filegroup if the index does not exist.  
CREATE UNIQUE CLUSTERED INDEX  
    AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate   
        ON Production.BillOfMaterials (ProductAssemblyID, ComponentID,   
        StartDate)  
    ON 'PRIMARY';  
GO  
-- Verify filegroup location of the clustered index.  
SELECT t.name AS [Table Name], i.name AS [Index Name], i.type_desc,  
    i.data_space_id, f.name AS [Filegroup Name]  
FROM sys.indexes AS i  
    JOIN sys.filegroups AS f ON i.data_space_id = f.data_space_id  
    JOIN sys.tables as t ON i.object_id = t.object_id  
        AND i.object_id = OBJECT_ID(N'Production.BillOfMaterials','U')  
GO  
--Create filegroup NewGroup if it does not exist.  
IF NOT EXISTS (SELECT name FROM sys.filegroups  
                WHERE name = N'NewGroup')  
    BEGIN  
    ALTER DATABASE AdventureWorks2012  
        ADD FILEGROUP NewGroup;  
    ALTER DATABASE AdventureWorks2012  
        ADD FILE (NAME = File1,  
            FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\File1.ndf')  
        TO FILEGROUP NewGroup;  
    END  
GO  
--Verify new filegroup  
SELECT * from sys.filegroups;  
GO  
-- Drop the clustered index and move the BillOfMaterials table to  
-- the Newgroup filegroup.  
-- Set ONLINE = OFF to execute this example on editions other than Enterprise Edition.  
DROP INDEX AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate   
    ON Production.BillOfMaterials   
    WITH (ONLINE = ON, MOVE TO NewGroup);  
GO  
-- Verify filegroup location of the moved table.  
SELECT t.name AS [Table Name], i.name AS [Index Name], i.type_desc,  
    i.data_space_id, f.name AS [Filegroup Name]  
FROM sys.indexes AS i  
    JOIN sys.filegroups AS f ON i.data_space_id = f.data_space_id  
    JOIN sys.tables as t ON i.object_id = t.object_id  
        AND i.object_id = OBJECT_ID(N'Production.BillOfMaterials','U');  
GO  

E.E. Quitar una restricción PRIMARY KEY en líneaDropping a PRIMARY KEY constraint online

Los índices creados como resultado de la creación de restricciones PRIMARY KEY o UNIQUE no se pueden quitar mediante DROP INDEX.Indexes that are created as the result of creating PRIMARY KEY or UNIQUE constraints cannot be dropped by using DROP INDEX. Se quitan con la instrucción ALTER TABLE DROP CONSTRAINT.They are dropped using the ALTER TABLE DROP CONSTRAINT statement. Para más información, vea ALTER TABLE.For more information, see ALTER TABLE.

En el ejemplo siguiente se elimina un índice clúster con una restricción PRIMARY KEY al quitar la restricción.The following example deletes a clustered index with a PRIMARY KEY constraint by dropping the constraint. La tabla ProductCostHistory no tiene restricciones FOREIGN KEY.The ProductCostHistory table has no FOREIGN KEY constraints. Si lo hiciera, sería necesario quitar esas restricciones primero.If it did, those constraints would have to be removed first.

-- Set ONLINE = OFF to execute this example on editions other than Enterprise Edition.  
ALTER TABLE Production.TransactionHistoryArchive  
DROP CONSTRAINT PK_TransactionHistoryArchive_TransactionID  
WITH (ONLINE = ON);  

F.F. Quitar un índice XMLDropping an XML index

En el siguiente ejemplo se quita un índice XML de la tabla ProductModel de la base de datos AdventureWorks2012AdventureWorks2012.The following example drops an XML index on the ProductModel table in the AdventureWorks2012AdventureWorks2012 database.

DROP INDEX PXML_ProductModel_CatalogDescription   
    ON Production.ProductModel;  

G.G. Quitar un índice clúster en una tabla FILESTREAMDropping a clustered index on a FILESTREAM table

En el ejemplo siguiente se elimina un índice clúster en línea y se mueven la tabla resultante (montón) y los datos FILESTREAM al esquema de partición MyPartitionScheme mediante las cláusulas MOVE TO y FILESTREAM ON.The following example deletes a clustered index online and moves the resulting table (heap) and FILESTREAM data to the MyPartitionScheme partition scheme by using both the MOVE TO clause and the FILESTREAM ON clause.

Válido para : SQL Server 2008SQL Server 2008 y versiones posteriores.Applies to: SQL Server 2008SQL Server 2008 and later.

DROP INDEX PK_MyClusteredIndex   
    ON dbo.MyTable   
    WITH (MOVE TO MyPartitionScheme,  
          FILESTREAM_ON MyPartitionScheme);  
GO  

Consulte tambiénSee Also

ALTER INDEX (Transact-SQL) ALTER INDEX (Transact-SQL)
ALTER PARTITION SCHEME (Transact-SQL) ALTER PARTITION SCHEME (Transact-SQL)
ALTER TABLE (Transact-SQL) ALTER TABLE (Transact-SQL)
CREATE INDEX (Transact-SQL) CREATE INDEX (Transact-SQL)
CREATE PARTITION SCHEME (Transact-SQL) CREATE PARTITION SCHEME (Transact-SQL)
CREATE SPATIAL INDEX (Transact-SQL) CREATE SPATIAL INDEX (Transact-SQL)
CREATE XML INDEX (Transact-SQL) CREATE XML INDEX (Transact-SQL)
EVENTDATA (Transact-SQL) EVENTDATA (Transact-SQL)
sys.indexes (Transact-SQL) sys.indexes (Transact-SQL)
sys.tables (Transact-SQL) sys.tables (Transact-SQL)
sys.filegroups (Transact-SQL) sys.filegroups (Transact-SQL)
sp_spaceused (Transact-SQL)sp_spaceused (Transact-SQL)