Meilleur moyen de créer un Serveur SQL rollback script?
Je suis en train de travailler sur certaines modifications du schéma d'une base de données existante.
J'ai sauvegardé la base de données pour obtenir un dev copie, et ont fait de mon changement. Je vais créer un seul rouleau de script pour migrer les modifications sur la machine de production en une seule transaction.
Est-il de meilleures pratiques pour la création d'un script de restauration de la recouvrir d'un déploiement de problème? Avant que j'ai écrit alors par la main en utilisant le modèle suivant:
- Déposer de nouvelles contraintes et index
- Modifier les tables de supprimer de nouvelles colonnes
- Goutte ajoutée tables
- Commit transaction
Est-il une meilleure approche?
Vous devez vous connecter pour publier un commentaire.
C'est principalement ça, je ne pense pas qu'il y a tellement de choses à ajouter, à part ce que votre approche. C'est comment nous le faisons dans notre société, nous, développeurs, sont responsables de la création du script et de la restauration de script, et nous sommes responsables de l'abandon de DB dans le même état où il était avant les premiers changements sont appliqués. Ensuite, les Administrateurs de bases de données exécuter dans la production, s'il y a un problème ils vont exécuter le script de restauration et tout est revenu à la normale. Il suffit de garder à l'esprit les dépendances et l'ordre dans lequel vous modifiez vos objets, puis de créer le script de restauration en arrière.
Il vous manque de la cinquième étape
Une approche plus efficace consiste à enregistrer les changements à mesure qu'ils se produisent comme RoR les migrations faire. Pour chaque DB changement de créer un script qui permettra à la fois d'appliquer la modification et la rouler en arrière (à votre choix, bien sûr). Vous pouvez ensuite que ces scripts sous contrôle de version comme votre code.
En outre, si vous gardez un numéro de version dans la base de données, vous pouvez automatiser un peu plus, par l'identification de chaque script avec un numéro de version et l'avoir à augmenter ou diminuer le numéro de version dans la base de données en fonction de l'action effectuée.
Si c'est une relativement petite base de données il suffit de faire une sauvegarde avant d'appliquer la mise à niveau. Si tout se détraque vous faire une restauration.
Une fois il va vivre et de nouvelles données sont saisies, vous ne pouvez pas vraiment de rouler de nouveau de toute façon. Vous avez juste à régler les problèmes.
Si vous utilisez un outil comme Redgate SQL de Comparer, vous pouvez exécuter la comparaison entre les deux bases de données dans les deux sens et utiliser les deux pour créer les scripts dont vous avez besoin. le dev de prod script aurait les modifications que vous apportez et le drap de dev script serait de retour à l'origine de la production de la base de données de l'état. Ceci vous assure de ne rien oublier dans le script.
Avec SQL Server 2005 ou plus récent, vous pouvez également créer un instantané de base de données, qui permet de revenir à cet état à tout moment. Voir cette page pour plus d'informations:
http://msdn.microsoft.com/en-us/library/ms175158.aspx