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

ESTE TÓPICO APLICA-SE A: simSQL Server (a partir de 2008)simBanco de Dados SQL do Microsoft AzuresimAzure SQL Data Warehouse simParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Remove um ou mais índices relacionais, espaciais, filtrados ou XML do banco de dados atual.Removes one or more relational, spatial, filtered, or XML indexes from the current database. É possível descartar um índice clusterizado e mover a tabela resultante para outro grupo de arquivos ou esquema de partição em uma única transação especificando a opção 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.

A instrução DROP INDEX não se aplica a índices criados definindo as restrições PRIMARY KEY ou UNIQUE.The DROP INDEX statement does not apply to indexes created by defining PRIMARY KEY or UNIQUE constraints. Para remover a restrição e o índice correspondente, use ALTER TABLE com a cláusula DROP CONSTRAINT.To remove the constraint and corresponding index, use ALTER TABLE with the DROP CONSTRAINT clause.

Importante

A sintaxe definida em <drop_backward_compatible_index> será removida em uma versão futura do MicrosoftMicrosoft SQL ServerSQL Server.The syntax defined in <drop_backward_compatible_index> will be removed in a future version of MicrosoftMicrosoft SQL ServerSQL Server. Evite usar essa sintaxe em novos trabalhos de desenvolvimento e planeje modificar os aplicativos que usam atualmente o recurso.Avoid using this syntax in new development work, and plan to modify applications that currently use the feature. Em vez disso, use a sintaxe especificada em <drop_relational_or_xml_index>.Use the syntax specified under <drop_relational_or_xml_index> instead. Índices XML não podem ser descartados usando sintaxe compatível com versões anteriores.XML indexes cannot be dropped using backward compatible syntax.

Ícone de link do tópico Convenções da sintaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

-- 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 ] . | schema_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 ] . | schema_name. ]   
    table_or_view_name  
}  
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse  

DROP INDEX index_name ON [ database_name . [schema_name ] . | schema_name . ] table_name  
[;]  

ArgumentosArguments

IF EXISTSIF EXISTS
Aplica-se a: SQL ServerSQL Server ( SQL Server 2016 (13.x)SQL Server 2016 (13.x) até a versão atual).Applies to: SQL ServerSQL Server ( SQL Server 2016 (13.x)SQL Server 2016 (13.x) through current version).

Remove condicionalmente o índice somente se ele já existe.Conditionally drops the index only if it already exists.

index_nameindex_name
É o nome do índice a ser descartado.Is the name of the index to be dropped.

database_namedatabase_name
É o nome do banco de dados.Is the name of the database.

schema_nameschema_name
É o nome do esquema ao qual a tabela ou exibição pertence.Is the name of the schema to which the table or view belongs.

table_or_view_nametable_or_view_name
É o nome da tabela ou exibição associada ao índice.Is the name of the table or view associated with the index. Índices espaciais têm suporte apenas em tabelas.Spatial indexes are supported only on tables.

Para exibir um relatório dos índices em um objeto, use a exibição do catálogo sys.indexes.To display a report of the indexes on an object, use the sys.indexes catalog view.

O Banco de Dados SQL do Windows Azure oferece suporte ao formato de nome de três partes database_name.[schema_name].object_name quando o database_name é o banco de dados atual ou o database_name é tempdb e o object_name começa com #.Windows 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>
Aplica-se a: SQL Server 2008SQL Server 2008 a SQL Server 2017SQL Server 2017, Banco de Dados SQLSQL Database.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Banco de Dados SQLSQL Database.

Controla opções de índice clusterizado.Controls clustered index options. Essas opções não podem ser usadas com outros tipos de índice.These options cannot be used with other index types.

MAXDOP = max_degree_of_parallelismMAXDOP = max_degree_of_parallelism
Aplica-se a: do SQL Server 2008SQL Server 2008 ao SQL Server 2017SQL Server 2017, Banco de Dados SQLSQL Database (somente Níveis de Desempenho P2 e P3).Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Banco de Dados SQLSQL Database (Performance Levels P2 and P3 only).

Substitui a opção de configuração max degree of parallelism enquanto durar a operação do índice.Overrides the max degree of parallelism configuration option for the duration of the index operation. Para obter mais informações, veja Configurar a opção max degree of parallelism de configuração de servidor.For more information, see Configure the max degree of parallelism Server Configuration Option. Use MAXDOP para limitar o número de processadores usados em uma execução de plano paralelo.Use MAXDOP to limit the number of processors used in a parallel plan execution. O máximo é de 64 processadores.The maximum is 64 processors.

Importante

MAXDOP não é permitido para índices espaciais nem XML.MAXDOP is not allowed for spatial indexes or XML indexes.

max_degree_of_parallelism pode ser:max_degree_of_parallelism can be:

11
Suprime a geração de plano paralelo.Suppresses parallel plan generation.

>1>1
Restringe o número máximo de processadores usados em uma operação de índice paralela ao número especificado.Restricts the maximum number of processors used in a parallel index operation to the specified number.

0 (padrão)0 (default)
Usa o número real de processadores, ou menos, com base na carga de trabalho atual do sistema.Uses the actual number of processors or fewer based on the current system workload.

Para obter mais informações, consulte Configurar operações de índice paralelo.For more information, see Configure Parallel Index Operations.

Observação

As operações de índice paralelas não estão disponíveis em todas as edições do SQL ServerSQL Server.Parallel index operations are not available in every edition of SQL ServerSQL Server. Para obter uma lista de recursos com suporte nas edições do SQL ServerSQL Server, consulte Edições e recursos com suporte no 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
Aplica-se a: SQL Server 2008SQL Server 2008 a SQL Server 2017SQL Server 2017, Banco de dados SQL do AzureAzure SQL Database.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Banco de dados SQL do AzureAzure SQL Database.

Especifica se as tabelas subjacentes e os índices associados estão disponíveis para consultas e modificação de dados durante a operação de índice.Specifies whether underlying tables and associated indexes are available for queries and data modification during the index operation. O padrão é OFF.The default is OFF.

ONON
Bloqueios de tabela não são mantidos a longo prazo.Long-term table locks are not held. Isso permite que consultas ou atualizações na tabela subjacente continuem.This allows queries or updates to the underlying table to continue.

OFFOFF
Os bloqueios de tabela são aplicados e a tabela fica indisponível durante a operação de índice.Table locks are applied and the table is unavailable for the duration of the index operation.

A opção ONLINE pode ser especificada ao descartar índices clusterizadosThe ONLINE option can only be specified when you drop clustered indexes. Para obter mais informações, consulte a seção Comentários.For more information, see the Remarks section.

Observação

As operações de índice online não estão disponíveis em todas as edições do SQL ServerSQL Server.Online index operations are not available in every edition of SQL ServerSQL Server. Para obter uma lista de recursos com suporte nas edições do SQL ServerSQL Server, consulte Edições e recursos com suporte no 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"
Aplica-se a: do SQL Server 2008SQL Server 2008 ao SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017. Banco de Dados SQLSQL Database dá suporte a "padrão" como o nome do grupo de arquivos. supports "default" as the filegroup name.

Especifica o local para onde mover as linhas de dados que atualmente estão no nível folha do índice clusterizado.Specifies a location to move the data rows that currently are in the leaf level of the clustered index. Os dados são movidos para o novo local no formulário de um heap.The data is moved to the new location in the form of a heap. É possível especificar um esquema de partição ou um grupo de arquivos como o novo local, mas o esquema de partição ou o grupo de arquivos deve existir.You can specify either a partition scheme or filegroup as the new location, but the partition scheme or filegroup must already exist. MOVE TO não é válido para exibições indexadas ou índices não clusterizados.MOVE TO is not valid for indexed views or nonclustered indexes. Se um esquema de partição ou grupo de arquivos não estiver especificado, a tabela resultante estará localizada no mesmo esquema de partição ou grupo de arquivos definido para o índice clusterizado.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.

Se um índice clusterizado for descartado usando MOVE TO, todos os índice clusterizados na tabela base serão recriados, mas permanecerão em seus grupos de arquivos ou esquemas de partição originais.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. Se a tabela base for movida para um grupo de arquivos ou esquema de partição diferente, os índices não clusterizados não serão movidos para coincidir com o novo local da tabela base (heap).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). Portanto, mesmo que os índices não clusterizados tenham sido previamente alinhados com o índice clusterizado, eles não poderão mais ser alinhados com o heap.Therefore, even if the nonclustered indexes were previously aligned with the clustered index, they might no longer be aligned with the heap. Para obter mais informações sobre o alinhamento de índices particionados, consulte Índices e tabelas particionadas.For more information about partitioned index alignment, see Partitioned Tables and Indexes.

partition_scheme_name ( column_name )partition_scheme_name ( column_name )
Aplica-se a: SQL Server 2008SQL Server 2008 a SQL Server 2017SQL Server 2017, Banco de Dados SQLSQL Database.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Banco de Dados SQLSQL Database.

Especifica um esquema de partição como o local para a tabela resultante.Specifies a partition scheme as the location for the resulting table. O esquema de partição já deve ter sido criado com a execução de CREATE PARTITION SCHEME ou ALTER PARTITION SCHEME.The partition scheme must have already been created by executing either CREATE PARTITION SCHEME or ALTER PARTITION SCHEME. Se nenhum local estiver especificado e a tabela estiver particionada, a tabela será incluída no mesmo esquema de partição que o índice clusterizado 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.

O nome da coluna no esquema não é restringido às colunas na definição do índice.The column name in the scheme is not restricted to the columns in the index definition. Qualquer coluna da tabela base pode ser especificada.Any column in the base table can be specified.

filegroup_namefilegroup_name
Aplica-se a: do SQL Server 2008SQL Server 2008 ao SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Especifica um grupo de arquivos como o local para a tabela resultante.Specifies a filegroup as the location for the resulting table. Se nenhum local estiver especificado e a tabela não estiver particionada, a tabela resultante será incluída no mesmo grupo de arquivos que o índice clusterizado.If no location is specified and the table is not partitioned, the resulting table is included in the same filegroup as the clustered index. O grupo de arquivos já deve existir.The filegroup must already exist.

"default""default"
Especifica o local padrão para a tabela resultante.Specifies the default location for the resulting table.

Observação

Nesse contexto, default não é uma palavra-chave.In this context, default is not a keyword. É um identificador do grupo de arquivos padrão e deve ser delimitado, como em MOVE TO "default" ou MOVE TO [default].It is an identifier for the default filegroup and must be delimited, as in MOVE TO "default" or MOVE TO [default]. Se "default" for especificado, a opção QUOTED_IDENTIFIER deverá ser definida como ON para a sessão atual.If "default" is specified, the QUOTED_IDENTIFIER option must be set ON for the current session. Essa é a configuração padrão.This is the default setting. Para obter mais informações, veja 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" }
Aplica-se a: do SQL Server 2008SQL Server 2008 ao SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Especifica o local para onde mover a tabela FILESTREAM que atualmente está no nível folha do índice clusterizado.Specifies a location to move the FILESTREAM table that currently is in the leaf level of the clustered index. Os dados são movidos para o novo local no formulário de um heap.The data is moved to the new location in the form of a heap. É possível especificar um esquema de partição ou um grupo de arquivos como o novo local, mas o esquema de partição ou o grupo de arquivos deve existir.You can specify either a partition scheme or filegroup as the new location, but the partition scheme or filegroup must already exist. FILESTREAM ON não é válido para exibições indexadas nem índices não clusterizados.FILESTREAM ON is not valid for indexed views or nonclustered indexes. Se um esquema de partição não estiver especificado, os dados estarão localizados no mesmo esquema de partição definido para o índice clusterizado.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 um esquema de partição para os dados FILESTREAM.Specifies a partition scheme for the FILESTREAM data. O esquema de partição já deve ter sido criado com a execução de CREATE PARTITION SCHEME ou ALTER PARTITION SCHEME.The partition scheme must have already been created by executing either CREATE PARTITION SCHEME or ALTER PARTITION SCHEME. Se nenhum local estiver especificado e a tabela estiver particionada, a tabela será incluída no mesmo esquema de partição que o índice clusterizado 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.

Se você especificar um esquema de partição para MOVE TO, deverá usar o mesmo esquema de partição 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 um grupo de arquivos FILESTREAM para dados FILESTREAM.Specifies a FILESTREAM filegroup for FILESTREAM data. Se nenhum local estiver especificado e a tabela não estiver particionada, os dados serão incluídos no grupo de arquivos FILESTREAM padrão.If no location is specified and the table is not partitioned, the data is included in the default FILESTREAM filegroup.

"default""default"
Especifica o local padrão para os dados FILESTREAM.Specifies the default location for the FILESTREAM data.

Observação

Nesse contexto, default não é uma palavra-chave.In this context, default is not a keyword. É um identificador do grupo de arquivos padrão e deve ser delimitado, como em MOVE TO "default" ou MOVE TO [default].It is an identifier for the default filegroup and must be delimited, as in MOVE TO "default" or MOVE TO [default]. Se "padrão" for especificado, a opção QUOTED_IDENTIFIER deverá ser definida como ON para a sessão atual.If "default" is specified, the QUOTED_IDENTIFIER option must be ON for the current session. Essa é a configuração padrão.This is the default setting. Para obter mais informações, veja SET QUOTED_IDENTIFIER (Transact-SQL).For more information, see SET QUOTED_IDENTIFIER (Transact-SQL).

RemarksRemarks

Quando um índice não clusterizado é descartado, a definição do índice é removida dos metadados e as páginas de dados do índice (a árvore B) são removidas dos arquivos do banco de dados.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. Quando um índice clusterizado é descartado, a definição do índice é removida dos metadados e as linhas de dados armazenadas no nível folha do índice clusterizado são armazenadas na tabela não ordenada resultante, um heap.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. Todo o espaço ocupado anteriormente pelo índice é recuperado.All the space previously occupied by the index is regained. Em seguida, esse espaço pode ser usado para qualquer objeto de banco de dados.This space can then be used for any database object.

Um índice não poderá ser descartado se o grupo de arquivos no qual está localizado estiver offline ou definido como somente leitura.An index cannot be dropped if the filegroup in which it is located is offline or set to read-only.

Quando o índice clusterizado de uma exibição indexada é descartado, todos os índices não clusterizados e estatísticas criadas automaticamente na mesma exibição são descartados automaticamente.When the clustered index of an indexed view is dropped, all nonclustered indexes and auto-created statistics on the same view are automatically dropped. As estatísticas criadas manualmente não são descartadas.Manually created statistics are not dropped.

A sintaxe table_or_view_name.index_name é mantida para compatibilidade com versões anteriores.The syntaxtable_or_view_name.index_name is maintained for backward compatibility. Um índice XML ou espacial não pode ser descartado usando a sintaxe compatível com versões anteriores.An XML index or spatial index cannot be dropped by using the backward compatible syntax.

Quando índices com 128 extensões ou mais são descartados, o Mecanismo de Banco de DadosDatabase Engine adia as desalocações de página atuais e seus bloqueios associados até depois da confirmação da transação.When indexes with 128 extents or more are dropped, the Mecanismo de Banco de DadosDatabase Engine defers the actual page deallocations, and their associated locks, until after the transaction commits.

Algumas vezes, os índices são descartados e recriados para reorganizar ou reconstruir o índice, como para aplicar um novo fator de preenchimento ou para reorganizar dados após um carregamento em massa.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 fazer isso, é mais eficiente usar ALTER INDEX, principalmente para índices clusterizados.To do this, using ALTER INDEXis more efficient, especially for clustered indexes. ALTER INDEX REBUILD tem otimizações para evitar a sobrecarga da reconstrução de índices não clusterizados.ALTER INDEX REBUILD has optimizations to prevent the overhead of rebuilding the nonclustered indexes.

Usando opções com DROP INDEXUsing Options with DROP INDEX

É possível definir as seguintes opções de índice ao remover um índice clusterizado: MAXDOP, ONLINE e MOVE TO.You can set the following index options when you drop a clustered index: MAXDOP, ONLINE, and MOVE TO.

Use MOVE TO para descartar o índice clusterizado e mover a tabela resultante para outro grupo de arquivos ou esquema de partição em uma única transação.Use MOVE TO to drop the clustered index and move the resulting table to another filegroup or partition scheme in a single transaction.

Quando ONLINE = ON é especificado, as consultas e modificações nos dados subjacentes e os índices não clusterizados associados não são bloqueados pela transação 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. Apenas um índice clusterizado pode ser descartado online de cada vez.Only one clustered index can be dropped online at a time. Para obter uma descrição completa da opção ONLINE, consulte CREATE INDEX (Transact-SQL).For a complete description of the ONLINE option, see CREATE INDEX (Transact-SQL).

Não é possível remover um índice clusterizado online se o índice está desabilitado em uma exibição ou conter colunas text, ntext, image, varchar(max), nvarchar(max), varbinary(max) ou xml nas linhas de dados no nível folha.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.

O uso das opções ONLINE = ON e MOVE TO requer espaço em disco temporário adicional.Using the ONLINE = ON and MOVE TO options requires additional temporary disk space.

Após a remoção de um índice, o heap resultante é mostrado na exibição do catálogo sys.indexes com NULL na coluna name.After an index is dropped, the resulting heap appears in the sys.indexes catalog view with NULL in the name column. Para exibir o nome da tabela, una sys.indexes com sys.tables em object_id.To view the table name, join sys.indexes with sys.tables on object_id. Para ver uma consulta de exemplo, consulte o exemplo D.For an example query, see example D.

Em computadores com multiprocessadores que estão executando o SQL Server 2005 Enterprise EditionSQL Server 2005 Enterprise Edition ou posterior, DROP INDEX pode usar mais processadores para executar operações de exame e de classificação associadas ao descarte do índice clusterizado, exatamente como fazem outras 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. É possível configurar manualmente o número de processadores usados para executar a instrução DROP INDEX especificando a opção 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 obter mais informações, consulte Configurar operações de índice paralelo.For more information, see Configure Parallel Index Operations.

Quando um índice clusterizado é descartado, as partições de heap correspondentes mantêm sua configuração de compactação de dados, a menos que o esquema de particionamento seja modificado.When a clustered index is dropped, the corresponding heap partitions retain their data compression setting unless the partitioning scheme is modified. Se o esquema de particionamento for alterado, todas as partições serão reconstruídas para um estado não compactado (DATA_COMPRESSION = NONE).If the partitioning scheme is changed, all partitions are rebuilt to an uncompressed state (DATA_COMPRESSION = NONE). As duas etapas a seguir são necessárias para descartar um índice clusterizado e alterar o esquema de particionamento:To drop a clustered index and change the partitioning scheme requires the following two steps:

  1. Descarte o índice clusterizado.Drop the clustered index.

  2. Modifique a tabela usando uma opção ALTER TABLE... REBUILD... especificando a opção de compactação.Modify the table by using an ALTER TABLE ... REBUILD ... option specifying the compression option.

Quando um índice clusterizado é descartado OFFLINE, apenas os níveis superiores dos índices clusterizados são removidos, portanto, a operação é bastante rápida.When a clustered index is dropped OFFLINE, only the upper levels of clustered indexes are removed; therefore, the operation is quite fast. Quando um índice clusterizado é removido ONLINE, o SQL ServerSQL Server recria o heap duas vezes, uma para a etapa 1 e outra para a etapa 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 obter mais informações sobre a compactação de dados, consulte Compactação de dados.For more information about data compression, see Data Compression.

Índices XMLXML Indexes

Não é possível especificar opções ao remover um índice XML.Options cannot be specified when you drop anXML index. Além disso, não é possível usar a sintaxe table_or_view_name.index_name.Also, you cannot use the table_or_view_name.index_name syntax. Quando um índice XML primário é descartado, todos os índices XML secundários associados são descartados automaticamente.When a primary XML index is dropped, all associated secondary XML indexes are automatically dropped. Para obter mais informações, veja Índices XML (SQL Server).For more information, see XML Indexes (SQL Server).

Índices espaciaisSpatial Indexes

Índices espaciais têm suporte apenas em tabelas.Spatial indexes are supported only on tables. Ao remover um índice espacial, você não pode especificar nenhuma opção nem usar .index_name.When you drop a spatial index, you cannot specify any options or use .index_name. A sintaxe correta é a seguinte: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 obter mais informações sobre índices espaciais, consulte Visão geral de índices espaciais.For more information about spatial indexes, see Spatial Indexes Overview.

PermissõesPermissions

Para executar DROP INDEX, no mínimo a permissão ALTER na tabela ou exibição é necessária.To execute DROP INDEX, at a minimum, ALTER permission on the table or view is required. Essa permissão é concedida por padrão à função de servidor fixa sysadmin e às funções de banco de dados fixas db_ddladmin e db_owner .This permission is granted by default to the sysadmin fixed server role and the db_ddladmin and db_owner fixed database roles.

ExemplosExamples

A.A. Descartando um índiceDropping an index

O exemplo a seguir exclui o índice IX_ProductVendor_VendorID na tabela ProductVendor do banco de dados 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. Descartando vários índicesDropping multiple indexes

O exemplo a seguir exclui dois índices em uma única transação no banco de dados 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. Descartando um índice clusterizado online e definindo a opção MAXDOPDropping a clustered index online and setting the MAXDOP option

O exemplo a seguir exclui um índice clusterizado com a opção ONLINE definida como ON e MAXDOP definida como 8.The following example deletes a clustered index with the ONLINE option set to ON and MAXDOP set to 8. Como a opção MOVE TO não foi especificada, a tabela resultante é armazenada no mesmo grupo de arquivos que o índice.Because the MOVE TO option was not specified, the resulting table is stored in the same filegroup as the index. Este exemplo usa o banco de dados AdventureWorks2012AdventureWorks2012This examples uses the AdventureWorks2012AdventureWorks2012 database

Aplica-se a: SQL Server 2008SQL Server 2008 a SQL Server 2017SQL Server 2017, Banco de Dados SQLSQL Database.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Banco de Dados SQLSQL Database.

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

D.D. Descartando um índice clusterizado online e movendo a tabela para um novo grupo de arquivosDropping a clustered index online and moving the table to a new filegroup

O exemplo a seguir exclui um índice clusterizado online e move a tabela resultante (heap) para o grupo de arquivos NewGroup usando a 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. As exibições do catálogo sys.indexes, sys.tablese sys.filegroups são consultadas para verificar o posicionamento do índice e da tabela nos grupos de arquivos antes e depois da movimentação.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. (Começando pelo SQL Server 2016 (13.x)SQL Server 2016 (13.x), é possível usar a sintaxe 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.)

Aplica-se a: do SQL Server 2008SQL Server 2008 ao SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

--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. Descartando uma restrição PRIMARY KEY onlineDropping a PRIMARY KEY constraint online

Índices criados em decorrência da criação de restrições PRIMARY KEY ou UNIQUE não podem ser descartados usando DROP INDEX.Indexes that are created as the result of creating PRIMARY KEY or UNIQUE constraints cannot be dropped by using DROP INDEX. Eles são descartados usando a instrução ALTER TABLE DROP CONSTRAINT.They are dropped using the ALTER TABLE DROP CONSTRAINT statement. Para obter mais informações, consulte ALTER TABLE.For more information, see ALTER TABLE.

O exemplo a seguir exclui um índice clusterizado com uma restrição PRIMARY KEY descartando a restrição.The following example deletes a clustered index with a PRIMARY KEY constraint by dropping the constraint. A tabela ProductCostHistory não tem nenhuma restrição FOREIGN KEY.The ProductCostHistory table has no FOREIGN KEY constraints. Se tivesse, essas restrições precisariam ser removidas primeiro.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. Descartando um índice XMLDropping an XML index

O exemplo a seguir remove um índice XML na tabela ProductModel do banco de dados 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. Descartando um índice clusterizado em uma tabela FILESTREAMDropping a clustered index on a FILESTREAM table

O exemplo a seguir exclui um índice clusterizado online e move a tabela resultante (heap) e os dados FILESTREAM para o esquema de partição MyPartitionScheme usando as cláusulas MOVE TO e 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.

Aplica-se a: do SQL Server 2008SQL Server 2008 ao SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

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

Consulte TambémSee 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)