J'ai beaucoup d'expérience avec cela. Mon application est hautement itérative et les changements de schéma se produisent fréquemment. Je fais une production environ toutes les 2 à 3 semaines, avec 50 à 100 éléments supprimés de ma liste FogBugz pour chacun d'entre eux. Toutes les versions que nous avons réalisées au cours des dernières années ont nécessité des modifications de schéma pour prendre en charge de nouvelles fonctionnalités.
La clé pour cela est de pratiquer les changements plusieurs fois dans un environnement de test avant de les faire réellement sur les serveurs live.
Je conserve un fichier de liste de contrôle de déploiement qui est copié à partir d'un modèle, puis fortement édité pour chaque version avec tout ce qui sort de l'ordinaire.
J'ai deux scripts que je cours sur la base de données, un pour les changements de schéma, un pour la programmabilité (procédures, vues, etc). Le script des changements est codé à la main, et celui avec les procs est scripté via Powershell. Le script de modification est exécuté lorsque tout est désactivé (vous devez choisir une heure qui dérange le moins d'utilisateurs pour cela), et il est exécuté commande par commande, manuellement, au cas où quelque chose deviendrait bizarre. Le problème le plus courant que j'ai rencontré est l'ajout d'une contrainte unique qui échoue en raison de lignes en double. Lorsque je me prépare à un cycle de tests d'intégration, je passe en revue ma liste de contrôle sur un serveur de test, comme si ce serveur était en production. Puis, en plus de cela, je vais obtenir une copie réelle de la base de données de production (c'est le bon moment pour échanger vos sauvegardes hors site), et je lance les scripts sur une version locale restaurée (ce qui est bien aussi la dernière sauvegarde est sonore). Je suis en train de tuer beaucoup d'oiseaux avec une pierre ici.
Voilà 4 bases de données au total:
- Dev: toutes les modifications doivent être apportées dans le script de changement, jamais avec le studio.
- Test: Les tests d'intégration se passe ici
- Copie de la production: déploiement Dernière minute pratique
- production
Vous avez vraiment, vraiment besoin de faire les choses quand vous le faites sur la production. La suppression des modifications de schéma est difficile.
En ce qui concerne les correctifs, je ne corrige que des procédures, jamais de schéma, à moins que ce soit un changement très isolé et crucial pour l'entreprise.