web-dev-qa-db-fra.com

Déplacer la clé primaire sur FileGroup (SQL Server 2012)

Comment puis-je déplacer une clé primaire en cluster sur un nouveau groupe de fichiers? J'ai déjà trouvé un "algorithme" possible, mais c'est horriblement inefficace:

  1. Drop non regroupés indexés (les nécessite d'être recours et reconstruit)
  2. Drop Index en cluster (nécessite que toute la table soit remplacée)
  3. Créer une nouvelle contrainte de clé primaire (opération de tri énorme)
  4. Créez tous les index non clusters (tri et écriture requis)

Y a-t-il une manière plus efficace? C'est horriblement inefficace et prendra beaucoup de temps car la table est de 50 Go de taille sur un serveur faible.

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

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

Cela préserve la propriété Logical PK malgré la mention de la syntaxe.

25
Martin Smith