Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de données SQL dans Microsoft Fabric
Cet article explique comment activer un index désactivé dans SQL Server à 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 régénère ou soit supprimé.
Limitations
Une fois l’index regénéré, 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 régénérant 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 clusterisé 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 sur l'index cluster produit les résultats ci-dessous sur l'index non-cluster désactivé.
| Action d’index groupé | État de l'index non-clusterisé désactivé |
|---|---|
ALTER INDEX REBUILD |
Reste désactivé |
ALTER INDEX ALL REBUILD |
Reconstruit et activé |
DROP INDEX |
Reconstruit et activé |
CREATE INDEX WITH DROP_EXISTING |
Reste désactivé |
La création d’un index cluster se comporte de la même façon 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 ci-dessous récapitule les actions autorisées sur les index non-cluster.
| Action sur un index non clusterisé | Lorsque les index cluster et non cluster sont désactivés | Lorsque l’index cluster est activé et que l’index non cluster est dans l’un ou l’autre état |
|---|---|---|
ALTER INDEX REBUILD |
L’action échoue | L’action réussit |
DROP INDEX |
L’action réussit | L’action réussit |
CREATE INDEX WITH DROP_EXISTING |
L’action échoue | L’action réussit |
Lors de la reconstruction d’index non-cluster compressés désactivés, data_compression prend par défaut la valeur none, ce qui signifie que les index ne sont pas compressés. Cela est dû à la perte des métadonnées des paramètres de compression quand les index non-cluster sont désactivés. Pour contourner ce problème, vous devez spécifier une compression de données explicite dans l’instruction rebuild.
Permissions
Nécessite l’autorisation ALTER sur la table ou la vue. Si vous utilisez DBCC DBREINDEX, vous devez posséder la table ou être membre du rôle serveur fixe sysadmin, ou membre du rôle de base de données fixe db_ddladmin ou db_owner.
Utilisez SQL Server Management Studio
Activer un index désactivé
Dans l’Explorateur d’objets, sélectionnez le signe plus pour développer la base de données contenant la table sur laquelle vous souhaitez activer un index.
Sélectionnez le signe plus (+) pour développer le dossier Tables.
Sélectionnez le signe plus pour développer la table sur laquelle vous souhaitez activer un index.
Sélectionnez le signe plus pour développer le dossier Indexes.
Cliquez avec le bouton droit sur l’index que vous souhaitez activer et sélectionnez Reconstruire.
Dans la boîte de dialogue Reconstruire les index , vérifiez que l’index correct se trouve dans les index pour reconstruire la grille et sélectionnez OK.
Activer tous les index d’une table
Dans l’Explorateur d’objets, sélectionnez le signe plus pour développer la base de données qui contient la table sur laquelle vous souhaitez activer les index.
Sélectionnez le signe plus (+) pour développer le dossier Tables.
Sélectionnez le signe plus pour développer la table sur laquelle vous souhaitez activer les index.
Cliquez avec le bouton droit sur le dossier Index et sélectionnez Tout reconstruire.
Dans la boîte de dialogue Reconstruire les index , vérifiez que les index appropriés se trouvent dans les index pour reconstruire la grille et sélectionnez OK. Pour supprimer un index de la grille Index à reconstruire , sélectionnez l'index et appuyez sur la touche SUPPR.
Les informations suivantes sont disponibles dans la boîte de dialogue Reconstruire les index :
Utiliser Transact-SQL
Les exemples de code de cet article utilisent les bases de données d'exemple AdventureWorks2025 ou AdventureWorksDW2025, que vous pouvez télécharger à partir de la page d'accueil Microsoft SQL Server Samples and Community Projects.
Activer un index désactivé à l’aide de ALTER INDEX
Exécutez le script Transact-SQL suivant. Cet exemple active l’index IX_Employee_OrganizationLevel_OrganizationNode sur la HumanResources.Employee table.
USE AdventureWorks2022;
GO
ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee REBUILD;
GO
Activer un index désactivé à l’aide de CREATE INDEX
Exécutez le script Transact-SQL suivant. Cet exemple recrée l’index IX_Employee_OrganizationLevel_OrganizationNode sur la table HumanResources.Employee, à l’aide des colonnes OrganizationLevel et OrganizationNode, puis supprime l’index existant IX_Employee_OrganizationLevel_OrganizationNode.
USE AdventureWorks2022;
GO
CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee(OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON);
GO
Activer un index désactivé à l’aide de DBCC DBREINDEX
Note
Cette fonctionnalité sera supprimée dans une prochaine version de SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.
Exécutez le script Transact-SQL suivant. Cet exemple active l’index IX_Employee_OrganizationLevel_OrganizationNode sur la HumanResources.Employee table.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
GO
Activer tous les index sur une table à l’aide de ALTER INDEX
Exécutez le script Transact-SQL suivant. Cet exemple active tous les index de la HumanResources.Employee table.
USE AdventureWorks2022;
GO
ALTER INDEX ALL
ON HumanResources.Employee REBUILD;
GO
Activer tous les index sur une table à l’aide de DBCC DBREINDEX
Note
Cette fonctionnalité sera supprimée dans une prochaine version de SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.
Exécutez le script Transact-SQL suivant. Cet exemple active tous les index de la HumanResources.Employee table.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ("HumanResources.Employee", " ");
GO