Partager via


Modification de tables et d'index partitionnés

Vous pouvez modifier des tables et des index partitionnés de plusieurs manières :

  • Modifier une fonction de partition pour repartitionner les tables ou index qui en font partie.

  • Modifier un schéma de partition pour désigner un groupe de fichiers destiné à contenir une nouvelle partition.

  • Convertir une table non partitionnée en table partitionnée.

  • Convertir une table partitionnée en table non partitionnée.

  • Transférer des données en ajoutant, déplaçant ou supprimant des partitions.

Modification d'une fonction de partition

Vous pouvez modifier le partitionnement d'une table ou d'un index en ajoutant ou supprimant le nombre de partitions spécifié (par incréments de 1) dans la fonction de partition de la table ou de l'index.

Lorsque vous ajoutez une partition, vous fractionnez une partition existante en deux partitions dont vous redéfinissez les limites. Lorsque vous supprimez une partition, vous fusionnez les limites de deux partitions pour n'en définir qu'une. Cette action a pour effet de remplir à nouveau une partition et de laisser l'autre non affectée.

Important

Pour ajouter une partition, il faut un groupe de fichiers existant doté de la propriété NEXT USED qui contiendra la nouvelle partition. Pour plus d'informations sur la façon de spécifier un groupe de fichiers NEXT USED dans un schéma de partition, consultez la section Modification d'un schéma de partition, plus loin dans cette rubrique.

Vous ne pouvez utiliser ALTER PARTITION FUNCTION que pour diviser une partition en deux ou pour fusionner deux partitions en une seule. Pour modifier le mode de partitionnement d'une table ou d'un index (par exemple, pour passer de 10 à 5 partitions), vous disposez de plusieurs options. La consommation de ressources de ces options peut varier en fonction de la configuration de votre système.

  • Créez une nouvelle table partitionnée avec la fonction de partition de votre choix, puis insérez les données de l'ancienne table dans la nouvelle à l'aide d'une instruction INSERT INTO...SELECT FROM.

  • Créez un index cluster partitionné dans un segment de mémoire.

    [!REMARQUE]

    Les index partitionnés que vous supprimez génèrent des segments de mémoire partitionnés.

  • Supprimez un index partitionné existant et reconstruisez-le à l'aide de la commande Transact-SQL CREATE INDEX avec la clause DROP EXISTING = ON.

  • Exécutez une séquence d'instructions ALTER PARTITION FUNCTION.

SQL Server n'assure pas la prise en charge de la réplication lors de la modification d'une fonction de partition. Si vous voulez apporter des modifications à une fonction de partition dans la base de données de publication, vous devez le faire manuellement dans la base d'abonnement.

Pour modifier une fonction de partition

Modification d'un schéma de partition

Vous pouvez modifier un schéma de partition en désignant un groupe de fichiers destiné à contenir la prochaine partition ajoutée à une table partitionnée. Pour ce faire, vous affectez la propriété NEXT USED au groupe de fichiers en question. Vous pouvez affecter la propriété NEXT USED à un groupe de fichiers vide ou à un groupe de fichiers qui contient déjà une partition. Autrement dit, un groupe de fichiers peut contenir plusieurs partitions.

Pour modifier un schéma de partition

Conversion d'une table non partitionnée en table partitionnée

Vous pouvez transformer une table non partitionnée existante en table partitionnée de deux manières.

La première consiste à créer un index cluster partitionné sur la table, à l'aide de l'instruction CREATE INDEX. Cette action revient à créer un index cluster sur une table, puisque SQL Server supprime en fait la table et la reconstruit dans un format d'index cluster. Si la table est déjà dotée d'un index cluster partitionné, vous pouvez supprimer cet index et le reconstruire sur un schéma de partition à l'aide de la commande CREATE INDEX avec la clause DROP EXISTING = ON.

Pour plus d'informations sur les index cluster, consultez Indications pour la conception d'index cluster.

L'autre méthode consiste à utiliser l'instruction Transact-SQL ALTER TABLE SWITCH pour faire basculer les données de la table vers une table partitionnée par plages contenant une seule partition. Cette table partitionnée doit exister lorsque la conversion est effectuée et l'unique partition qu'elle contient doit être vide. Pour plus d'informations sur le basculement de partition, consultez Transfert efficace de données à l'aide du commutateur de partitionnement. Une fois la table transformée en table partitionnée, vous pouvez modifier sa fonction de partition pour ajouter des partitions selon la procédure exposée dans la section Modification d'une fonction de partition.

Pour convertir une table existante en table partitionnée

Conversion d'une table partitionnée en table non partitionnée

La conversion d'une table partitionnée en table non partitionnée implique simplement une modification de la fonction de partition pour que la table soit constituée d'une seule partition. D'un point de vue technique, la table est toujours partitionnée, mais ce statut n'a aucune signification pour les opérations ultérieures effectuées sur la table.

Si la table est dotée d'un index cluster partitionné, vous pouvez obtenir le même résultat en supprimant l'index et en le reconstruisant en tant qu'index non partitionné. Pour ce faire, vous pouvez utiliser la commande Transact-SQL CREATE INDEX avec la clause DROP EXISTING = ON.

Pour convertir une table partitionnée en table standard sans partition

Transfert de données avec basculement de partition

L'instruction Transact-SQL ALTER TABLE...SWITCH permet de transférer rapidement et efficacement des blocs de données entre tables partitionnées. Pour plus d'informations, consultez Transfert efficace de données à l'aide du commutateur de partitionnement.