Partilhar via


Habilitar índices e restrições

Este tópico descreve como habilitar um índice desabilitado no SQL Server 2012 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

    Segurança

  • Para habilitar um índice desabilitado, usando:

    SQL Server Management Studio

    Transact-SQL

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.

    Criando um novo índice clusterizado, comporta-se igual a 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.

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.

Ícone de seta usado com o link Voltar ao Início[Início]

Usando 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:

Ícone de seta usado com o link Voltar ao Início[Início]

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

Ícone de seta usado com o link Voltar ao Início[Início]