Ce est un moyen facile de déployer les modifications de base de données à l'aide de SQL Server?
Le logiciel système, je travail sur un système de facturation médicale, de grandes quantités de données et de tableaux de données et des procédures stockées.
J'ai été la lecture de l'article "12 Étapes pour améliorer le Code" et dans Le Joel Test n ° 2 états: Pouvez-vous faire un build en une seule étape?
Maintenant, je me demandais, est-ce que le déploiement de construire (de sorte que les clients peuvent mettre à jour leur déploiement).
Maintenant la principale question que je suis en cours d'exécution à travers, est de savoir comment vous faire une étape de base de données mise à jour?
À l'heure actuelle, lorsque nous apportons des modifications à une base de données, toutes les modifications sont enregistrées et ajoutées à une base de données mise à jour du script, qui reçoit un numéro de version associé à quand un de déployer à la clientèle de construire est créé.
Est-il un moyen plus simple de faire cela? Un script ou une application qui prend un "avant et après" regarder un schéma de base de données et crée un script de mise à jour comme je l'ai mentionné?
Ou est-ce juste la façon dont tout le monde le fait, que je trouve difficile à croire, mais plausible.
Un système automatisé permettrait de diminuer les erreurs, et d'accélérer le déploiement de construire considérablement les temps, et je serais intéressé de savoir comment le faire.
Vous devez vous connecter pour publier un commentaire.
Il y a différents niveaux de complexité que vous pouvez passer par:
si vous avez des scripts de mise à jour que vous créez manuellement, et sont tout simplement à la recherche d'un moyen facile de les appliquer à différents serveurs, découvrez la SSW SQL Déployer par SSW de Consultation. Il peut gérer que le scénario est très bien
si vous avez tendance à faire plus d'une base de données diff approche, puis Rouge Gate SQL de Comparer (déjà mentionné) et SQL Emballeur faire un super combo. Vous pouvez diff la base de données entre l'ancien et le nouveau, puis appliquer les modifications dans un joli paquet - comme un EXE ou un projet C#
si vous voulez un vrai, de bout en bout, bien pensé approche (avec un peu d'une courbe d'apprentissage), découvrez Innovartis' DBGhost approche. C'est un ensemble de méthode /technique comment gérer la base de données de développement et de mises à jour incrémentielles. Il est très puissant et très prometteur - mais c'est un peu "tout ou rien": soit vous l'acheter et l'utiliser de bout en bout, ou vous n'avez pas
Espère que cela aide un peu!
redgate dispose d'un outil de SQL de Comparer de comparer les bases de données et générer un script de synchronisation. Nous avons utilisé pour l'utiliser, mais plus récemment opté pour le manuel de scripts à l'aide de la même procédure que vous décrivez. À l'aide de manuel, fine, des scripts avec un numéro de version unique a bien fonctionné.
Nous avons nos scripts de mise à niveau intégrée dans les tests unitaires afin qu'ils obtiennent testé avec du code dans le cadre de l'intégration continue. Je pense que c'est un élément important de "faire construire en une seule étape."
Prendre un coup d'oeil à ce blog. J'ai utilisé ce type de mise à jour de script à partir de la version DB sur quelques projets et il fonctionne très bien.
http://blogs.msdn.com/danhardan/archive/2007/03/30/database-change-scripts-mambo-style.aspx
Vous pouvez avoir à modifier le flux de travail un peu pour s'adapter à votre flux de travail et/ou de mettre à jour le modèle .fichier sql, mais dans l'ensemble j'ai trouvé l'idée d'être une bonne approche de la DB déploiements.
EDIT: Juste pour préciser comment j'ai utilisé cette technique. Fondamentalement, l'ensemble de mes DB révision des scripts de se mettre dans le contrôle de source. Puis, après l'étape de génération sur la construction de la boîte, ce Mambo outil est exécuté sur le répertoire de scripts à lancer les scripts en un seul script encerclée par une transaction afin de permettre la restauration si quelque chose va de travers. Ensuite, le programme d'installation est assez intelligent pour regarder pour le .script sql à exécuter sur la base de données existante.
La raison pour laquelle cela fonctionne est parce que le roulé script vérifie chaque pièce qui a été une personne script a déjà été exécuté à l'encontre de la base de données souhaitée. En conséquence, seuls les derniers scripts sont exécutés. Un inconvénient de cette est que lorsqu'un script est vérifié dans le contrôle de code source et a été déployé, vous ne pouvez pas le modifier depuis le tableau de suivi se croit déjà le script a été exécuté. C'est très bien pour les projets sur lesquels j'ai travaillé, car nous venons d'ajouter un autre script pour le dossier scripts.
J'espère que je suis expliquant le processus assez bien à comprendre. Ce n'est pas vraiment complexe et peut être très utile si l'approche est applicable à votre projet.
Réponse à la première question: "Maintenant, je me demandais, est-ce que le déploiement de construire (de sorte que les clients peuvent mettre à jour leur déploiement)?"
Je crois que le Joel Test n ° 2 n'est pas pour le déploiement se déplace à la prod, mais pour continuios de l'insertion au cours du développement.
Que pour les modifications de base de données dans la prod, ils devraient tous être fait par le biais d'un script dans le cadre d'une opération de déploiement ou d'après la base de données ont été sauvegardées. Vous voulez toujours être en mesure de revenir en arrière si quelque chose échoue dans la mise en œuvre.
Développer votre base de données comme un ensemble de correctifs qui dépendent l'un sur l'autre. Ensuite, utilisez un outil comme https://github.com/LuvDaSun/sqlpatch (par moi) pour construire un fichier sql pour le déploiement.
sqlpatch va trier les patchs dans l'ordre et assurez-vous que chaque patch est exécutée exactement une fois, même si le même script est exécuté deux fois.
Cette stratégie peut être utilisée pour le déploiement de votre base de données ci/cd de l'environnement. Ce déploiement aussi facile que de pousser à une branche.
Il y a des applications de synchronisation de bases de données, mais je pense que votre mieux de faire ce que vous faites. L'écriture d'un script pour mettre à jour une base de données vous donne la possibilité de gérer les erreurs et d'exécuter des transactions. Ceci est considéré comme la meilleure pratique.
Microsoft eux-mêmes introduit Applications de la couche données dans SQL 2012 comme une option gratuite pour le déploiement et la mise à niveau de bases de données.
J'utilise et comme cet outil, notamment pour les déploiements de production.