Habilitar índices e restrições
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
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).