Habilitar índices e restrições
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Banco de Dados SQL no Microsoft Fabric
Este tópico 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á em estado desabilitado até que seja recriado ou descartado
Neste tópico
Antes de começar:
Para habilitar um índice desabilitado, usando:
Antes de começar
Limitações e Restrições
Depois da reconstrução do índice, qualquer restrição que tiver sido desabilitada devido à desabilitação do índice deverá ser habilitada manualmente. As restrições PRIMARY KEY e UNIQUE são habilitadas reconstruindo o índice associado. Esse índice deve ser reconstruído (habilitado) antes de você poder habilitar restrições FOREIGN KEY que fazem referência à restrição PRIMARY KEY ou UNIQUE. Restrições FOREIGN KEY são habilitadas usando a instrução ALTER TABLE CHECK CONSTRAINT.
A recriação de um índice clusterizado desabilitado não pode ser efetuada quando a opção ONLINE está 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 clusterizado Índice não clusterizado desabilitado... ALTER INDEX REBUILD. Permanece desabilitado. ALTER INDEX ALL REBUILD. É reconstruído e habilitado. DROP INDEX. Permanece desabilitado. 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 estão desabilitados. Quando o índice clusterizado está habilitado e o índice não clusterizado está em um dos estados. ALTER INDEX REBUILD. A ação falha. A ação tem êxito. DROP INDEX. A ação tem êxito. A ação tem êxito. CREATE INDEX WITH DROP_EXISTING. A ação falha. A ação tem êxito. Quando a recompilação desabilitar os índices não clusterizados compactados, data_compression usará “none” como padrão, 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 resolver esse problema, é necessário especificar a compactação de dados explícita na instrução de recompilação.
Segurança
Permissões
Requer a permissão ALTER na tabela ou exibição. Se estiver usando o DBCC DBREINDEX, o usuário deverá ter a tabela ou ser membro da função de servidor fixa sysadmin ou das funções de banco de dados fixas db_ddladmin e db_owner.
Como usar o SQL Server Management Studio
Para habilitar um índice desabilitado
No Pesquisador de Objetos, clique no sinal de adição para expandir o banco de dados que contém a tabela na qual você deseja habilitar um índice.
Clique no sinal de adição para expandir a pasta Tabelas .
Clique no sinal de adição para expandir a tabela na qual você deseja habilitar um índice.
Clique no sinal de adição 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 Recriar Índices , verifique se o índice correto está na grade Índices a serem recriados e clique em OK.
Para habilitar todos os índices de uma tabela
No Pesquisador de Objetos, clique no sinal de adição para expandir o banco de dados que contém a tabela na qual você deseja habilitar os índices.
Clique no sinal de adição para expandir a pasta Tabelas .
Clique no 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 Recriar Índices , verifique se os índices corretos estão na grade Índices a serem recriados e clique em 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 :
Usando o Transact-SQL
Para habilitar um índice desabilitado usando ALTER INDEX
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e clique em Executar.
USE AdventureWorks2022; GO -- Enables the IX_Employee_OrganizationLevel_OrganizationNode index -- on the HumanResources.Employee table. ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee REBUILD; GO
Para habilitar um índice desabilitado usando CREATE INDEX
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e clique em Executar.
USE AdventureWorks2022; GO -- re-creates the IX_Employee_OrganizationLevel_OrganizationNode index -- on the HumanResources.Employee table -- using the OrganizationLevel and OrganizationNode columns -- and then deletes the existing IX_Employee_OrganizationLevel_OrganizationNode index CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee (OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON); GO
Para habilitar um índice desabilitado usando DBCC DBREINDEX
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e clique em Executar.
USE AdventureWorks2022; GO -- enables the IX_Employee_OrganizationLevel_OrganizationNode index -- on the HumanResources.Employee table DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode); GO
Para habilitar todos os índices em uma tabela usando ALTER INDEX
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e clique em Executar.
USE AdventureWorks2022; GO -- enables all indexes -- on the HumanResources.Employee table ALTER INDEX ALL ON HumanResources.Employee REBUILD; GO
Para habilitar todos os índices em uma tabela usando DBCC DBREINDEX
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e clique em Executar.
USE AdventureWorks2022; GO -- enables all indexes -- on the HumanResources.Employee table DBCC DBREINDEX ("HumanResources.Employee", " "); GO
Para obter mais informações, veja ALTER INDEX (Transact-SQL), CREATE INDEX (Transact-SQL) e DBCC DBREINDEX (Transact-SQL).