Partilhar via


Habilitar índices e restrições

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase 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 é desativado, ele permanece em um estado desativado até ser reconstruído ou descartado.

Limitations

Depois que o índice for reconstruído, todas as restrições que foram desabilitadas devido à desativação do índice devem ser habilitadas manualmente. PRIMARY KEY e UNIQUE as restrições são ativadas pela reconstrução do índice associado. Esse índice deve ser reconstruído (ativado) antes que você possa ativar restrições FOREIGN KEY que referenciam a restrição PRIMARY KEY ou UNIQUE. FOREIGN KEY As restrições são ativadas usando a ALTER TABLE CHECK CONSTRAINT instrução.

A reconstrução de um índice clusterizado desativado não pode ser executada quando a ONLINE opção está definida como ON.

Quando o índice clusterizado é desabilitado ou habilitado e o índice não clusterizado é desabilitado, a ação de índice clusterizado tem os seguintes resultados no índice não clusterizado desabilitado.

Ação de índice agrupado Status de índice não clusterizado desabilitado
ALTER INDEX REBUILD Permanece incapacitado
ALTER INDEX ALL REBUILD Reconstruído e ativado
DROP INDEX Reconstruído e ativado
CREATE INDEX WITH DROP_EXISTING Permanece incapacitado

Criar um novo índice clusterizado se comporta da mesma forma que ALTER INDEX ALL REBUILD.

As ações permitidas em índices não clusterizados associados a um índice clusterizado dependem do estado, 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 agrupados e não agrupados estão desabilitados Quando o índice clusterizado está habilitado e o índice não clusterizado está em qualquer um dos estados
ALTER INDEX REBUILD A ação não procede 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 não procede A ação é bem-sucedida

Ao reconstruir índices não clusterizados compactados desabilitados, o padrão data_compression é none, o que significa que os índices são descompactados. Isso ocorre devido às configurações de compactação, os metadados são perdidos quando os índices não clusterizados são desativados. Para contornar esse problema, você deve especificar compactação de dados explícita na instrução rebuild.

Permissions

Requer permissão ALTER na tabela ou vista. Se estiver a usar DBCC DBREINDEX, deverá ser o proprietário da tabela ou ser membro da função de servidor fixa sysadmin ou membro das funções fixas de banco de dados db_ddladmin ou db_owner.

Utilize SQL Server Management Studio

Ativar um índice desativado

  1. 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.

  2. Selecione o sinal de mais para expandir a pasta Tabelas.

  3. Selecione o sinal de adição para expandir a tabela na qual você deseja habilitar um índice.

  4. Selecione o sinal de mais para expandir a pasta Índices.

  5. Clique com o botão direito do rato no índice que pretende ativar e selecione Recriar.

  6. Na caixa de diálogo Reconstruir Índices, verifique se o índice correto está na Índices para reconstruir grade e selecione OK.

Habilitar todos os índices em uma tabela

  1. 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.

  2. Selecione o sinal de mais para expandir a pasta Tabelas.

  3. Selecione o sinal de adição para expandir a tabela na qual você deseja habilitar os índices.

  4. Clique com o botão direito do mouse na pasta Índices e selecione Reconstruir tudo.

  5. Na caixa de diálogo Reconstruir Índices, verifique se os índices corretos estão na grade Índices a serem reconstruídos e selecione OK. Para remover um índice do Índices para reconstruir grade, selecione o índice e pressione a tecla Delete.

As seguintes informações estão disponíveis na caixa de diálogo Reconstruir Índices:

Utilize o Transact-SQL

Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que pode ser descarregado da página inicial de Exemplos e Projetos da Comunidade do Microsoft SQL Server.

Habilitar um índice desabilitado usando ALTER INDEX

Execute o seguinte script Transact-SQL. Este exemplo habilita o índice IX_Employee_OrganizationLevel_OrganizationNode na tabela HumanResources.Employee.

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 índice IX_Employee_OrganizationLevel_OrganizationNode na tabela HumanResources.Employee, usando as colunas OrganizationLevel e OrganizationNode, e, 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 novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.

Execute o seguinte script Transact-SQL. Este exemplo habilita o índice IX_Employee_OrganizationLevel_OrganizationNode na tabela HumanResources.Employee.

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 novos trabalhos 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