Partager via


Activer les index et les contraintes

Cette rubrique explique comment activer un index désactivé dans SQL Server 2014 à l’aide de SQL Server Management Studio ou de Transact-SQL. Une fois qu’un index est désactivé, il reste dans un état désactivé jusqu’à ce qu’il soit reconstruit ou supprimé

Dans cette rubrique

Avant de commencer

Limitations et restrictions

  • Après la reconstruction de l’index, toutes les contraintes qui ont été désactivées en raison de la désactivation de l’index doivent être activées manuellement. Les contraintes PRIMARY KEY et UNIQUE sont activées en reconstruisant l'index associé. Cet index doit être reconstruit (activé) avant de pouvoir activer les contraintes FOREIGN KEY qui référencent la contrainte PRIMARY KEY ou UNIQUE. Les contraintes FOREIGN KEY sont activées à l’aide de l’instruction ALTER TABLE CHECK CONSTRAINT.

  • La reconstruction d’un index cluster désactivé ne peut pas être effectuée lorsque l’option ONLINE est définie sur ON.

  • Lorsque l’index cluster est désactivé ou activé et que l’index non cluster est désactivé, l’action d’index cluster a les résultats suivants sur l’index non cluster désactivé.

    Action d'index clusterisé Index non-groupé désactivé
    ALTER INDEX REBUILD. Reste désactivé.
    ALTER INDEX ALL REBUILD. A été reconstruit et activé.
    SUPPRIMER L'INDEX (DROP INDEX) Reste désactivé.
    CRÉER INDEX AVEC SUPPRIMER_EXISTANT. Reste désactivé.

    La création d’un index clusterisé se comporte de la même manière que ALTER INDEX ALL REBUILD.

  • Les actions autorisées sur les index non cluster associés à un index cluster dépendent de l’état, désactivé ou activé, des deux types d’index. Le tableau suivant récapitule les actions autorisées sur les index non cluster.

    Action d’Index non clusterisé Lorsque les index clusterisés et non clusterisés sont désactivés. Lorsque l’index cluster est activé et que l’index non cluster est dans l’un ou l’autre état.
    Reconstruction de l'index avec ALTER L’action échoue. L’action réussit.
    DROP INDEX. L’action réussit. L’action réussit.
    CRÉER INDEX AVEC SUPPRESSION_EXISTANT. L’action échoue. L’action réussit.

Sécurité

Autorisations

Nécessite l’autorisation ALTER sur la table ou la vue. Si vous utilisez DBCC DBREINDEX, eser doit posséder la table ou être membre du rôle serveur fixe sysadmin ou des db_ddladmin et db_owner rôles de base de données fixes.

Utilisation de SQL Server Management Studio

Pour activer un index désactivé

  1. Dans l’Explorateur d’objets, cliquez sur le signe plus pour développer la base de données contenant la table sur laquelle vous souhaitez activer un index.

  2. Cliquez sur le signe plus pour développer le dossier Tables .

  3. Cliquez sur le signe plus pour développer la table sur laquelle vous souhaitez activer un index.

  4. Cliquez sur le signe plus pour développer le dossier Indexes.

  5. Cliquez avec le bouton droit sur l’index que vous souhaitez activer et sélectionnez Reconstruire.

  6. Dans la boîte de dialogue Reconstruire les index , vérifiez que l’index correct se trouve dans les index pour reconstruire la grille, puis cliquez sur OK.

Pour activer tous les index d’une table

  1. Dans l’Explorateur d’objets, cliquez sur le signe plus pour développer la base de données contenant la table sur laquelle vous souhaitez activer les index.

  2. Cliquez sur le signe plus pour développer le dossier Tables .

  3. Cliquez sur le signe plus pour développer la table sur laquelle vous souhaitez activer les index.

  4. Cliquez avec le bouton droit sur le dossier Index et sélectionnez Reconstruire tout.

  5. Dans la boîte de dialogue Reconstruire les index , vérifiez que les index corrects se trouvent dans la grille Index pour reconstruire la grille, puis cliquez sur OK. Pour supprimer un index des index pour reconstruire la grille, sélectionnez l’index, puis appuyez sur la touche Supprimer.

Les informations suivantes sont disponibles dans la boîte de dialogue Reconstruire les index :

Utilisation de Transact-SQL

Pour activer un index désactivé à l’aide de ALTER INDEX

  1. Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l'exemple suivant dans la fenêtre de requête, puis cliquez sur Exécuter.

    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  
    

Pour activer un index désactivé à l’aide de CREATE INDEX

  1. Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l'exemple suivant dans la fenêtre de requête, puis cliquez sur Exécuter.

    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  
    

Pour activer un index désactivé à l’aide de DBCC DBREINDEX

  1. Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l'exemple suivant dans la fenêtre de requête, puis cliquez sur Exécuter.

    USE AdventureWorks2012;   
    GO  
    -- enables the IX_Employee_OrganizationLevel_OrganizationNode index  
    -- on the HumanResources.Employee table  
    DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);  
    GO  
    

Pour activer tous les index d’une table à l’aide de ALTER INDEX

  1. Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l'exemple suivant dans la fenêtre de requête, puis cliquez sur Exécuter.

    USE AdventureWorks2012;  
    GO  
    -- enables all indexes  
    -- on the HumanResources.Employee table  
    ALTER INDEX ALL ON HumanResources.Employee  
    REBUILD;  
    GO  
    

Pour activer tous les index d’une table à l’aide de DBCC DBREINDEX

  1. Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l'exemple suivant dans la fenêtre de requête, puis cliquez sur Exécuter.

    USE AdventureWorks2012;   
    GO  
    -- enables all indexes  
    -- on the HumanResources.Employee table  
    DBCC DBREINDEX ("HumanResources.Employee", " ");  
    GO  
    

Pour plus d’informations, consultez ALTER INDEX (Transact-SQL), CREATE INDEX (Transact-SQL) et DBCC DBREINDEX (Transact-SQL).