Partager via


Activer les index et les contraintes

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase 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é

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

  2. Sélectionnez le signe plus (+) pour développer le dossier Tables.

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

  4. Sélectionnez 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 et sélectionnez OK.

Activer tous les index d’une table

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

  2. Sélectionnez le signe plus (+) pour développer le dossier Tables.

  3. Sélectionnez 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 Tout reconstruire.

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