1

J'utilise SQL Server et Visual Studio. J'ai une construction automatique via CCNET. Lorsque je valide mon code dans SVN, la génération automatique s'exécute et tous les tests unitaires s'exécutent avec des données mockées/stubbed.Déployer/exécuter des modifications de base de données avant la génération automatique

La seule chose qui ne va pas automatiquement maintenant est l'exécution de la base de données changes/scripts, je le fais à la main. Quelqu'un at-il des conseils comment cela peut être automatisé?

Répondre

2

De toute évidence, vous devez automatiser l'exécution de vos scripts de modification de la base de données - le défi étant de savoir comment décider de l'exécution. La réponse est que vous devez stocker la version du schéma dans la base de données (ou dans les métadonnées de la base de données) et choisir les scripts à exécuter en conséquence - que ce soit pour mettre une base de données à zéro ou appliquer les modifications appropriées.

Ma solution est de mettre mon entretien du schéma de base de données entièrement dans le code, je pense que c'est la meilleure version du writeup je l'ai fait jusqu'à présent:

How to create "embedded" SQL 2008 database file if it doesn't exist?

Code donné assez intelligent pour faire la mise à niveau le schéma en ligne dans votre application ou dans sa propre application console, vous devriez être capable d'intégrer des changements de schémas automatisés dans vos scripts de construction CI. Je suis allé à la chasse un peu plus loin depuis que j'ai écrit ce qui précède - il s'avère que ce que je fais n'est pas différent de Ruby Migrations (je crois que quelque chose de similaire se retrouve également dans Subsonic) sauf que je ne fais pas Je n'ai actuellement aucune capacité «down» pour inverser un changement de schéma (une idée intéressante que je crains d'avoir un code potentiellement destructeur «live»). Il existe un projet .NET open source Migrator.net qui semble utile, mais je ne suis pas sûr de la façon dont il est maintenu activement.


Addendum

Depuis que j'ai écrit cette entité code premier cadre est apparu et ils commencent à faire des progrès avec les migrations - de sorte que serait maintenant vaut le détour. Cependant, je ne pense pas que ce soit encore là et comme plusieurs autres options que j'ai vu ce n'est pas simple. Je dois emballer le mien et le rendre disponible!

2

Il y a plusieurs façons de résoudre ce problème. Une approche que j'ai utilisée dans un certain nombre d'entreprises, j'ai documenté here, fondamentalement, c'est le code source pour gérer la tâche d'automatisation de vos mises à jour de base de données et quelques explications sur les comment et pourquoi.

Je vous recommande également de vérifier Data Dude (juste Google it), je ne l'ai pas utilisé mais je crois comprendre qu'il peut être utilisé pour automatiser les mises à jour db (peut-être tort).

Je dirais que je ne recommande pas d'utiliser un outil de comparaison de base de données pour générer des scripts ... sans prendre grand soin. Le problème est habituellement que vous compareriez votre dev db (où vos changements sont) avec dire la boîte de construction db, mais votre db pourrait contenir (et probablement) d'autres changements que vous avez faits pour des corrections de bugs 'work in progress' sur. Quoi qu'il en soit, comme je l'ai dit, il y a plusieurs façons de le faire, d'examiner quelques options et de choisir celles qui conviennent le mieux à votre style et à celui de votre équipe.

Bonne automatisation :-)

Questions connexes