Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do
AzureInstância
Gerenciada de SQL do AzureBanco de dados SQL no Microsoft Fabric
Este artigo descreve como habilitar um índice desabilitado no SQL Server usando o SQL Server Management Studio ou o Transact-SQL. Depois que um índice for desabilitado, ele permanecerá no estado desabilitado até ser recriado ou removido.
Limitations
Após a recompilação do índice, todas as restrições que foram desabilitadas devido à desabilitação do índice devem ser habilitadas manualmente. As restrições PRIMARY KEY e UNIQUE são habilitadas ao recriar o índice associado. Esse índice deve ser recriado (habilitado) antes que você possa habilitar restrições FOREIGN KEY que referenciam a restrição PRIMARY KEY ou UNIQUE.
FOREIGN KEY as restrições são habilitadas usando a ALTER TABLE CHECK CONSTRAINT instrução.
A recriação de um índice clusterizado desabilitado não pode ser executada quando a opção ONLINE é definida como ON.
Quando o índice clusterizado é habilitado ou desabilitado e o índice não clusterizado é desabilitado, a ação do índice clusterizado tem os seguintes resultados no índice não clusterizado desabilitado.
| Ação de índice agrupado | Status do índice não clusterizado desabilitado |
|---|---|
ALTER INDEX REBUILD |
Permanece desabilitado |
ALTER INDEX ALL REBUILD |
Recriado e habilitado |
DROP INDEX |
Recriado e habilitado |
CREATE INDEX WITH DROP_EXISTING |
Permanece desabilitado |
A criação de um novo índice clusterizado se comporta da mesma forma que ALTER INDEX ALL REBUILD.
Ações permitidas em índices não clusterizados associados a um índice clusterizado dependem do estado, se desabilitado ou habilitado, de ambos os tipos de índice. A tabela a seguir resume as ações permitidas em índices não clusterizados.
| Ação de índice não clusterizado | Quando os índices clusterizados e não clusterizados são desabilitados | Quando o índice clusterizado está habilitado e o índice não clusterizado está em ambos os estados |
|---|---|---|
ALTER INDEX REBUILD |
A ação falha | A ação é bem-sucedida |
DROP INDEX |
A ação é bem-sucedida | A ação é bem-sucedida |
CREATE INDEX WITH DROP_EXISTING |
A ação falha | A ação é bem-sucedida |
Ao reconstruir índices não clusterizados compactados desabilitados, data_compression será configurado para none, o que significa que os índices serão descompactados. Isso ocorre devido à perda dos metadados das configurações de compactação quando os índices não clusterizados são desabilitados. Para contornar esse problema, você deve especificar a compactação de dados explícita na instrução rebuild.
Permissions
Exige a permissão ALTER na tabela ou na exibição. Se estiver usando DBCC DBREINDEX, você deverá ser proprietário da tabela ou membro da função de servidor fixa sysadmin, ou membro de uma das funções fixas de banco de dados db_ddladmin ou db_owner.
Utilize o SQL Server Management Studio
Habilitar um índice desabilitado
No Pesquisador de Objetos, selecione o sinal de adição para expandir o banco de dados que contém a tabela na qual você deseja habilitar um índice.
Selecione o sinal de adição para expandir a pasta Tabelas.
Selecione o sinal de adição para expandir a tabela na qual você deseja habilitar um índice.
Selecione o sinal de mais para expandir a pasta Índices.
Clique com o botão direito do mouse no índice a ser habilitado e selecione Recriar.
Na caixa de diálogo Recompilar Índices, verifique se o índice correto está na grade Índices para recompilar e selecione OK.
Habilitar todos os índices em uma tabela
No Pesquisador de Objetos, selecione o sinal de adição para expandir o banco de dados que contém a tabela na qual você deseja habilitar os índices.
Selecione o sinal de adição para expandir a pasta Tabelas.
Selecione o sinal de adição para expandir a tabela na qual você deseja habilitar os índices.
Clique com o botão direito do mouse na pasta Índices e selecione Recriar Tudo.
Na caixa de diálogo Reconstruir Índices, verifique se os índices corretos estão na grade de Índices para reconstruir e selecione OK. Para remover um índice da grade Índices a serem recriados , selecione o índice e pressione a tecla Delete.
As seguintes informações estão disponíveis na caixa de diálogo Recriar Índices :
Usar Transact-SQL
Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que você pode baixar na página inicial Microsoft SQL Server Samples and Community Projects.
Habilitar um índice desabilitado usando ALTER INDEX
Execute o seguinte script Transact-SQL. Este exemplo habilita o IX_Employee_OrganizationLevel_OrganizationNode índice na HumanResources.Employee tabela.
USE AdventureWorks2022;
GO
ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee REBUILD;
GO
Habilitar um índice desabilitado usando CREATE INDEX
Execute o seguinte script Transact-SQL. Este exemplo recria o IX_Employee_OrganizationLevel_OrganizationNode índice na HumanResources.Employee tabela, usando as OrganizationLevel colunas e OrganizationNode , em seguida, exclui o índice existente IX_Employee_OrganizationLevel_OrganizationNode .
USE AdventureWorks2022;
GO
CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee(OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON);
GO
Habilitar um índice desabilitado usando DBCC DBREINDEX
Note
Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em um novo trabalho de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.
Execute o seguinte script Transact-SQL. Este exemplo habilita o IX_Employee_OrganizationLevel_OrganizationNode índice na HumanResources.Employee tabela.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
GO
Habilitar todos os índices em uma tabela usando ALTER INDEX
Execute o seguinte script Transact-SQL. Este exemplo habilita todos os índices na HumanResources.Employee tabela.
USE AdventureWorks2022;
GO
ALTER INDEX ALL
ON HumanResources.Employee REBUILD;
GO
Habilitar todos os índices em uma tabela usando DBCC DBREINDEX
Note
Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em um novo trabalho de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.
Execute o seguinte script Transact-SQL. Este exemplo habilita todos os índices na HumanResources.Employee tabela.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", " ");
GO