Déplacer la clé primaire vers un groupe de fichiers (SQL Server 2012)

14

Comment déplacer une clé primaire en cluster vers un nouveau groupe de fichiers? J'ai déjà trouvé un "algorithme" possible mais il est horriblement inefficace:

  1. Supprimer les index non clusterisés (nécessite leur reclassement et leur reconstruction)
  2. Supprimer l'index clusterisé (nécessite le recours à toute la table)
  3. Créer une nouvelle contrainte de clé primaire (énorme opération de tri)
  4. Créer tous les index non clusterisés (tri et écriture requis)

Existe-t-il un moyen plus efficace? Ceci est horriblement inefficace et prendra beaucoup de temps car la table fait 50 Go sur un serveur faible.

N'y a-t-il pas un moyen de sauter tout cela et de faire juste une reconstruction sur un nouveau groupe de fichiers? Cela ne nécessiterait aucun tri de données.

usr
la source

Réponses:

24
CREATE UNIQUE CLUSTERED INDEX Your_PK_Name
    ON YourTable(YourColumnList)
WITH (DROP_EXISTING =  ON )
ON [YourOtherFileGroup]

Cela préserve la propriété PK logique bien qu'elle ne soit pas mentionnée dans la syntaxe.

Martin Smith
la source