3

Je développe actuellement une application ASP.NET MVC avec une tonne de relations PK-FK dans la base de données. Au début du développement, l'équipe avec laquelle je travaillais a voté contre ma recommandation d'utiliser des INT pour tous les PK ... ils ont décidé d'utiliser des GUID.Quel est le moyen le plus rapide de convertir toutes les colonnes et relations GUID PK et FK en int?

Longue histoire ... l'équipe s'est divisée, et maintenant j'ai le contrôle pour changer les choses ... Je suis passé de WebForms à MVC et je voudrais convertir tous les Guids en Ints ... Je déteste l'URL laide comme "YUCK !! Plus l'overhead impliqué dans l'indexation guids ... plus il n'aide probablement pas mon modèle Linq to Entities

En utilisant SQL Server 2008, ASP.NET MVC 2, Linq à Entités (Entité cadre)

Quelqu'un connait un moyen rapide de convertir ces satanés en GUIDs ints?

+1

Demandez-vous comment rectifier la base de code, comment migrer des données existantes ou les deux? –

+0

Je suppose que j'aurais dû être plus clair. Pardon.Le bonbon est qu'il y a peu de données existantes, car cette application est encore en développement. Le code sera la partie facile. Je demande spécifiquement comment mettre à jour le schéma. – GuiDoody

Répondre

8

Je suppose que vous voulez aussi que les INT soient des IDENTITY. Voici comment migrer les données:

  1. Put application hors ligne, aucune mise à jour de DB peut se produire, suspendre tous les travaux de l'Agent SQL, les importations etc
  2. Pour chaque PK:
    • créer une table de copie avec la même Structure + 1 nouvelle identité int (1,1) de colonne
    • de données de copie de table ancienne pour nouvelle table
    • utilisation sp_rename pour permuter les tables de telle sorte que la nouvelle table devient l'ancienne table
    • rinçage, cycle et répéter pour toutes les tables avec PKs (tables ont maintenant deux GUIDs et INTs)
  3. Pour chaque FK:
    • ajouter une nouvelle colonne INT sur la table source FK (celui qui a la contrainte)
    • exécuter une mise à jour qui relie les deux tables sur les GUIDs et attribue les nouveaux int à la PKs colonne relation
  4. rajouter FK constaints, maintenant sur les colonnes INT
  5. Supprimer les colonnes GUID
+0

+1 bonne recette pour le faire! Merci de votre partage –

+0

Merci pour le partage. Je vais aller avec ça! – GuiDoody

3
  1. Script la génération de toutes les clés primaires et étrangères
  2. Supprimez toutes les touches primaires et étrangères
  3. Raname toutes les colonnes GUID de SomethingID à SomethingGUID
  4. Créer un nouveau int colonnes SomethingID
  5. Recréer clés primaires
  6. scripts d'écriture pour mettre à jour toutes les clés étrangères en utilisant les relations GUID
  7. Recréer clés étrangères
  8. supprimer des colonnes GUID
+0

Merci pour les commentaires. CA aide. – GuiDoody

Questions connexes