Question

Mon besoin est assez basique et je ne veux pas reconstruire la roue. J'aime ma base de données de script et ont écrit des scripts mettre à jour d'une version à l'autre par exemple 001-create-tables.sql, 002-alter-column.sql etc.

Ce que je veux est une simple ligne de commande d'outil ou MsBuild qui se penchera sur une base de données voir quelle version la base de données est à (en utilisant une convention de table) et d'exécuter tous les scripts dans un dossier qui ont un nombre plus élevé que le courant la version de base de données. Je voudrais aussi que l'outil pour faire reculer un script si elle échoue / lève une erreur et arrêter à ce moment-là.

Voilà ce que je voudrais, mais je ne me dérange pas de changer mes conventions que je veux écrire mes propres scripts SQL. Je veux aussi que l'outil soit libre ou open source que je ne ai pas besoin de trop. Comme mes projets sont C # Je préfère l'outil construit en .Net

Était-ce utile?

La solution 7

OK, donc je n'ai pas aimé l'une des options que je trouve là-bas. J'ai trouvé quelques bons outils pour créer les scripts mais rien qui permettrait de suivre la version dans la base de données et exécuter les nouveaux scripts. Quoi qu'il en soit, je suis allé de l'avant et roulé mon outil Open Source pour faire le travail. Si vous voulez l'utiliser, vous pouvez télécharger si de CodePlex son appelé KissDB . J'ai aussi jeté un billet de blog à ce sujet sur mon blog blog.RunXc

Autres conseils

Avez-vous regardé Ouvrir DBDiff encore? Il peut être un bon endroit pour commencer.

si vous changez d'avis sur open source, SQL d' Red Gate Comparer est le chemin à parcourir l'OMI.

Il y a un projet assez intéressant appelé SQLRunner sur SourceForge - c'est C #, il est .NET, il est :-) passé "pre-alpha"

Je ne l'ai pas utilisé moi-même, mais encore -. A l'air assez bon, à mon humble avis

Marc

Ceci est un problème difficile, clair et simple. Les outils mentionnés dans d'autres réponses peuvent certainement aider, mais vous êtes toujours laissé faire beaucoup vous-même.

J'ai une table dans mon schéma qui stocke un ID pour chaque script de changement (ce qui correspond au numéro de cas dans mon problème / bug système de suivi). A la fin de chaque script de changement insérer l'ID dans ce tableau. J'ai un script séparé qui vérifie ce qui a été fait sur une instance spécifique de la base de données. Il serait possible d'automatiser l'exécution de chacun des scripts qui n'ont pas encore été exécuté, mais je tiens à exécuter des scripts de modification manuellement dans tout cas de problème.

rollback peut être presque impossible, d'autant plus que de nombreux changements de schéma nécessitent une sorte de migration de données. J'ai trouvé que les meilleures pratiques avec les modifications apportées au schéma sont pour les rendre rétrocompatible. Ne jamais renommer une colonne ou d'une table (au moins au début). Seulement ajouter des choses, et faire tout nouveau ajoute annulable. Un script de restauration supprime simplement les nouveautés, si vous réalisez quelque chose n'est pas tout à fait raison. Bien sûr, vous vous retrouvez avec les anciens, les colonnes inutilisées et tables, de sorte que vous écrivez un second script qui est exécuté après votre version actuelle est considérée comme stable, qui se débarrasse des vieux trucs.

Je vous veux écrire tous les scripts vous-même, vous pouvez profiter de la SQL Server 2005 tablediff Utilitaire qui vous donnera beaucoup de flexibilité. Voici quelques exemples d'utilisation peuvent être trouver

Si vous avez tous vos scripts pour une version donnée dans un dossier, vous pouvez exécuter cela comme un fichier batch si vous le placez dans ce dossier:

for %%X in (*.SQL) do SQLCMD -S <SERVER_NAME> -d <DATABASE_NAME> -E -I -i "%%X"  >> ResultBatch.txt

Désolé, je ne me souviens pas où je suis arrivé ce billet depuis ou je donne crédit.

Nous avons nos développeurs vérifier les scripts de modification de base de données dans Subversion. Tous les scripts sont reproductibles afin que vous puissiez les exécuter plusieurs fois sans erreur. Nous établissons également des liens les scripts de modification de publier des articles ou des ids de bugs afin que nous puissions retenir un changement réglée au besoin. Nous avons alors un processus de construction automatisé qui donne le coup d'un seul fichier de script SQL avec toutes les modifications triées de façon appropriée. Ce fichier unique est ensuite utilisé pour promouvoir les changements aux environnements de test, QA et production. Nous pensons que c'est la meilleure approche avec les développeurs d'entreprise. Plus de détails sur la façon dont nous le faisons Vos commentaires serait apprécié.

Utilisez liquibase. Il est Java bien.

Oui, vous pouvez écrire vos scripts de migration dans la variante SQL de votre choix.

Il est bien testé et utilisé par beaucoup de gens.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top