Partilhar via


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

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