2010-03-08 7 views
4

Le problème: nous avons une application qui a une partie qui est utilisée par un très petit sous-ensemble de l'ensemble des utilisateurs, et cette partie de l'application est fonctionnant d'une base de données séparée aussi bien. Dans un monde parfait, les schémas des deux bases de données seraient synchronisés, mais ce n'est pas le cas. Certaines migrations ont été exécutées sur la plus petite base de données, la plupart ne l'ont pas été; et de plus, il n'y a rien de tel qu'un numéro de révision pour pouvoir identifier facilement ceux qui ont et ceux qui ne l'ont pas. Nous aimerions résoudre ce dilemme pour les projets futurs. Au cours d'une discussion, nous avons proposé le plan d'action suivant, et je me demande si quelqu'un connaît un projet qui a déjà résolu ce problème:Schémas de base de données WAY désynchronisés - nécessité de se mettre à jour sans perdre de données

Ce que nous aimerions faire, c'est créer une base de données vide à partir du schéma de la grande base de données entièrement migrée, puis déplacez toutes les données de la base de données non migrée plus petite dans celle-ci vide. Si cela rend les choses plus faciles, on peut probablement supposer, pour le bien de ce problème, qu'aucune migration n'a jamais supprimé quoi que ce soit, mais seulement ajouté. Sinon, s'il y a d'autres solutions connues, j'aimerais les entendre également.

Répondre

8

Vous pouvez utiliser un outil de comparaison de schéma tel que SQL Compare de Red-Gate. Vous pouvez synchroniser les modifications et ne pas perdre de données. J'ai écrit à ce sujet et de nombreux autres outils allant largement dans le prix ici:

http://bertrandaaron.wordpress.com/2012/04/20/re-blog-the-cost-of-reinventing-the-wheel/

La bonne chose est que la plupart des outils ont des versions d'essai. Donc, vous pouvez les essayer pendant 14 jours (entièrement fonctionnel) et ne l'acheter que si cela répond à vos attentes. Je ne peux pas parler pour les autres outils, mais j'utilise RG depuis des années et c'est un outil très performant et fiable.

(Mise à jour 2012-06-23 pour aider à prévenir la pourriture lien.)

+1

1) Excellent article, je l'ai également envoyé au reste de mon équipe. 2) Il s'agit d'un de ces projets où, sans être TRÈS persuasif, il y avait 0 budget d'achat de logiciel. Cependant, l'Open DBDiff qui a été lié semble être un excellent outil pour ce que je dois faire. Merci beaucoup! – Zind

3

Red-Gate's SQL Compare as Aaron Bertrand mentions in his answer est une très bonne option. Toutefois, si vous n'êtes pas autorisé à acheter quelque chose, une option est d'essayer quelque chose comme:

1) Pour chaque base de données, scripter toutes les tables, les contraintes, les index, vues, procédures, etc.

2) exécuter un DIFF, et passer en revue toutes les différences et assurez-vous que la petite DB peut les accepter. Si ce n'est pas le cas, implémentez les modifications (y compris les données) nécessaires sur la petite base de données pour pouvoir accepter les modifications.

3) créer une nouvelle base de données vide à partir du schéma du grand DB

4) importer les données de la petite DB dans la DB née.

2

Vous pouvez également désosser votre base de données dans Visual Studio en tant que projet de base de données. Visual Studio Team Suite Édition de base de données R2 (je connais le nom long) a la capacité de comparer et de comparer des données, mais la beauté de cette approche est que vous avez toute votre base de données dans un projet de base de données agréable. et intégrer avec le contrôle de la source. Cela vous permet de construire à partir d'une source commune et de déployer des modifications cohérentes.

Questions connexes