Habilitar índices e restrições

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstâ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

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

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

  2. Clique no sinal de adição para expandir a pasta Tabelas .

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

  4. Clique no sinal de adição para expandir a pasta Índices .

  5. Clique com o botão direito do mouse no índice a ser habilitado e selecione Recriar.

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

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

  2. Clique no sinal de adição para expandir a pasta Tabelas .

  3. Clique no 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 Recriar Tudo.

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

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.

  2. Na barra Padrão, clique em Nova Consulta.

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

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.

  2. Na barra Padrão, clique em Nova Consulta.

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

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.

  2. Na barra Padrão, clique em Nova Consulta.

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

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.

  2. Na barra Padrão, clique em Nova Consulta.

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

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.

  2. Na barra Padrão, clique em Nova Consulta.

  3. 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).