Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico descreve como desabilitar um índice ou restrições no SQL Server 2014 usando o SQL Server Management Studio ou o Transact-SQL. Desabilitar um índice impede o acesso do usuário ao índice e para índices clusterizados aos dados da tabela subjacentes. A definição de índice permanece em metadados e as estatísticas de índice são mantidas em índices não clusterizados. Desabilitar um índice não clusterizado ou clusterizado em uma exibição exclui fisicamente os dados do índice. Desabilitar um índice clusterizado em uma tabela impede o acesso aos dados; os dados ainda permanecem na tabela, mas não estão disponíveis para operações de DML (linguagem de manipulação de dados) até que o índice seja descartado ou recriado.
Nesse Tópico
Antes de começar:
Para desabilitar um índice usando:
Antes de começar
Limitações e restrições
O índice não é mantido enquanto está desabilitado.
O otimizador de consulta não considera o índice desabilitado ao criar planos de execução de consulta. Além disso, as consultas que fazem referência ao índice desabilitado com uma indicação de tabela falham.
Não é possível criar um índice que use o mesmo nome de um índice desabilitado existente.
Um índice desabilitado pode ser descartado.
Ao desabilitar um índice exclusivo, a restrição PRIMARY KEY ou UNIQUE e todas as restrições FOREIGN KEY que fazem referência às colunas indexadas de outras tabelas também são desabilitadas. Ao desabilitar um índice clusterizado, todas as restrições FOREIGN KEY de entrada e saída na tabela subjacente também são desabilitadas. Os nomes de restrição são listados em uma mensagem de aviso quando o índice é desabilitado. Após a reconstrução do índice, todas as restrições precisam ser ativadas manualmente por meio da instrução ALTER TABLE CHECK CONSTRAINT.
Índices não clusterizados são desabilitados automaticamente quando o índice clusterizado associado é desabilitado. Eles não podem ser habilitados até que o índice clusterizado na tabela ou exibição esteja habilitado ou o índice clusterizado na tabela seja descartado. Índices não clusterizados devem ser habilitados explicitamente, a menos que o índice clusterizado tenha sido habilitado usando a instrução ALTER INDEX ALL REBUILD.
A instrução ALTER INDEX ALL REBUILD recompila e habilita todos os índices desabilitados na tabela, exceto índices desabilitados em exibições. Índices em visões devem ser habilitados em uma instrução ALTER INDEX ALL REBUILD separada.
Desabilitar um índice clusterizado em uma tabela também desabilita todos os índices clusterizados e não clusterizados em exibições que fazem referência a essa tabela. Esses índices devem ser recriados da mesma forma que os da tabela referenciada.
As linhas de dados do índice clusterizado desabilitado não podem ser acessadas, exceto para remover ou recompilar o índice clusterizado.
Você pode recompilar um índice não clusterizado desabilitado online quando a tabela não tiver um índice clusterizado desabilitado. No entanto, você sempre deve reconstruir um índice clusterizado desabilitado offline, se usar a instrução ALTER INDEX REBUILD ou CREATE INDEX WITH DROP_EXISTING. Para obter mais informações sobre operações de índice online, consulte Executar Operações de Índice Online.
A instrução CREATE STATISTICS não pode ser executada com êxito em uma tabela que tenha um índice clusterizado desabilitado.
A opção AUTO_CREATE_STATISTICS banco de dados cria novas estatísticas em uma coluna quando o índice é desabilitado e as seguintes condições existem:
AUTO_CREATE_STATISTICS está definido como ON
Não há estatísticas existentes para a coluna.
As estatísticas são necessárias durante a otimização da consulta.
Se um índice clusterizado estiver desabilitado, o DBCC CHECKDB não poderá retornar informações sobre a tabela subjacente; Em vez disso, a instrução informa que o índice clusterizado está desabilitado. DBCC INDEXDEFRAG não pode ser usado para desfragmentar um índice desabilitado; a instrução falha com uma mensagem de erro. Você pode usar DBCC DBREINDEX para recriar um índice desabilitado.
A criação de um novo índice clusterizado permite índices não clusterizados desabilitados anteriormente. Para obter mais informações, consulte Habilitar Índices e Restrições.
Segurança
Permissões
Para executar ALTER INDEX, no mínimo, a permissão ALTER na tabela ou exibição é necessária.
Como usar o SQL Server Management Studio.
Para desabilitar um índice
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 desabilitar um índice.
Clique no sinal de mais para expandir a pasta Tabelas.
Clique no sinal de adição para expandir a tabela na qual você deseja desabilitar um índice.
Clique no sinal de adição para expandir a pasta Índices.
Clique com o botão direito do mouse no índice que você deseja desabilitar e selecione Desabilitar.
Na caixa de diálogo Desabilitar Índices , verifique se o índice correto está nos Índices para desabilitar a grade e clique em OK.
Para desabilitar todos os índices em uma tabela
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 desabilitar os índices.
Clique no sinal de mais para expandir a pasta Tabelas.
Clique no sinal de adição para expandir a tabela na qual você deseja desabilitar os índices.
Clique com o botão direito do mouse na pasta Índices e selecione Desabilitar Tudo.
Na caixa de diálogo Desabilitar Índices , verifique se os índices corretos estão nos Índices para desabilitar a grade e clique em OK. Para remover um índice da grade Índices para desabilitar, selecione o índice e pressione a tecla Delete no teclado.
As seguintes informações estão disponíveis na caixa de diálogo Desabilitar Índices :
Nome do índice
Exibe o nome do índice. Durante a execução, essa coluna também exibe um ícone que representa o status.
Nome da tabela
Exibe o nome da tabela ou exibição na qual o índice foi criado.
Tipo de índice
Exibe o tipo do índice: Clustered, Nonclustered, Spatial ou XML.
Estado
Exibe o status da operação de desativação. Os valores possíveis após a execução são:
Em Branco
Antes da execução , o Status está em branco.
Em Andamento
A desabilitação dos índices foi iniciada, mas não está concluída.
Êxito
A operação de desativação foi concluída com êxito.
Erro
Um erro foi encontrado durante a operação de desabilitar o índice e a operação não foi concluída com êxito.
Parado
A desabilitação do índice não foi concluída com êxito porque o usuário interrompeu a operação.
Mensagem
Fornece o texto das mensagens de erro durante a desabilitação. Durante a execução, os erros aparecem como hiperlinks. O texto dos hiperlinks descreve o corpo do erro. A coluna Mensagem raramente é ampla o suficiente para ler o texto completo da mensagem. Há duas maneiras de obter o texto completo:
Mova o ponteiro do mouse sobre a célula de mensagem para exibir uma Dica de Ferramenta com o texto de erro.
Clique no hiperlink para exibir uma caixa de diálogo exibindo o erro completo.
Usando Transact-SQL
Para desabilitar um índice
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e clique em Executar.
USE AdventureWorks2012; GO -- disables the IX_Employee_OrganizationLevel_OrganizationNode index -- on the HumanResources.Employee table ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee DISABLE;
Para desabilitar todos os índices em uma tabela
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e clique em Executar.
USE AdventureWorks2012; GO -- Disables all indexes on the HumanResources.Employee table. ALTER INDEX ALL ON HumanResources.Employee DISABLE;
Para mais informações, consulte ALTERAR ÍNDICE (Transact-SQL).