Compartilhar via


Habilitar índices e restrições

Este tópico descreve como habilitar um índice desabilitado no SQL Server 2014 usando o SQL Server Management Studio ou o Transact-SQL. Depois que um índice é desabilitado, ele permanece em um estado desabilitado até ser recriado ou descartado

Nesse Tópico

Antes de começar

Limitações e restrições

  • Depois de recompilar o índice, todas as restrições que foram desabilitadas devido à desabilitação do índice devem ser habilitadas manualmente. As restrições PRIMARY KEY e UNIQUE são habilitadas recriando o índice associado. Esse índice deve ser recriado (habilitado) antes de habilitar restrições FOREIGN KEY que fazem referência à restrição PRIMARY KEY ou UNIQUE. As restrições de 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 executada quando a opção ONLINE é definida como ON.

  • Quando o índice clusterizado está 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 clusterizado Índice não clusterizado desabilitado...
    ALTERAR ÍNDICE RECONSTRUIR. Permanece desabilitado.
    ALTERAR TODOS OS ÍNDICES RECONSTRUIR. Está refeito e ativado.
    DROP INDEX. Permanece desabilitado.
    CRIAR ÍNDICE COM DROP_EXISTING. Permanece desabilitado.

    A criação de 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 clusterizados e não clusterizados são desabilitados. Quando o índice clusterizado está habilitado e o índice não clusterizado está em ambos os estados.
    ALTERAR ÍNDICE RECONSTRUIR. A ação falha. A ação é bem-sucedida.
    DROP INDEX. A ação é bem-sucedida. A ação é bem-sucedida.
    CRIAR ÍNDICE COM DROP_EXISTING. A ação falha. A ação é bem-sucedida.

Segurança

Permissões

Requer a permissão ALTER na tabela ou exibição. Se estiver usando DBCC DBREINDEX, o usuário deverá ser proprietário da 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 mais 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 que você deseja habilitar e selecione Recompilar.

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

Para habilitar todos os índices em 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 mais 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 Recompilar Tudo.

  5. Na caixa de diálogo Recompilar Índices, verifique se os índices corretos estão na grade Índices para recompilar e clique em OK. Para remover um índice da grade Índices para recompilar, selecione o índice e pressione a tecla Excluir.

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

Usando 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 AdventureWorks2012;  
    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 AdventureWorks2012;  
    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 AdventureWorks2012;   
    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 AdventureWorks2012;  
    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 AdventureWorks2012;   
    GO  
    -- enables all indexes  
    -- on the HumanResources.Employee table  
    DBCC DBREINDEX ("HumanResources.Employee", " ");  
    GO  
    

Para obter mais informações, consulte ALTER INDEX (Transact-SQL), CREATE INDEX (Transact-SQL), e DBCC DBREINDEX (Transact-SQL).