Je démarre un nouveau projet et j'utilise SVN (avec Tortoise) comme système de contrôle de version. Je me demandais s'il était possible de maintenir également une base de données SQL Server en utilisant le même système.
Je voudrais mettre à jour mes tables / fonctions / vues / procs / déclencheurs / etc. mais pas mes données car ce seront toutes des données de test de toute façon. Je ne sais pas vraiment comment configurer cela. Je suis tombé sur quelques options, mais je voudrais savoir s'il en manquait, et s'il y a peut-être un guide ou quelque chose pour m'aider à m'en servir.
J'ai vu et entendu parler de Red Gate, mais je suis à la recherche de quelque chose de gratuit (ou du moins très peu coûteux). Je sais que je pourrais toujours écrire quelque chose moi-même, mais je n'essaie pas vraiment d'y consacrer du temps.
Une chose que j'ai rencontrée était un package open source appelé ScriptDB4Svn . Quelqu'un a-t-il déjà utilisé ça avant? Est-ce bien? Peut-il faire les choses dont j'ai besoin et est-il assez simple de se configurer?
la source
Has anyone used this before? Is it good? Can it do the things I need it to do and is it pretty simple to get setup?
Pourquoi avez-vous peur de l'essayer par vous-même? Saisissez-le et jouez.Réponses:
Techniquement, vous n'avez même pas besoin d'un outil, vous pouvez directement scripter les objets et les archiver dans le contrôle de code source. C'est un peu plus de travail sans l'outil, mais c'est certainement réalisable.
BTW: J'ai utilisé l'outil RedGate et il est assez élégant et vaut de l'argent.
la source
Il semble que vous ayez une configuration principalement Microsoft. Vous pouvez jeter un œil aux projets de base de données (anciennement DataDude). Ils transforment essentiellement T-SQL en un langage de première classe dans Visual Studio; vous pouvez:
[dbo]
dans la plupart des cas) pour cette belle augmentation de 30% des performances.Ils unifient également votre code et le code de votre base de données sous le contrôle des sources. Si vous l' homme-up et l' écriture de vos objets de base de données ( au lieu d'utiliser des outils Davinci dans SSMS) vous atterrissez également à l' aide d' un IDE - ce qui est agréable.
la source
Vous pouvez utiliser Rails. Rails a un concept de migration de base de données que vous pouvez appliquer ou annuler. D'après mon expérience, c'est la meilleure façon de mettre à jour une base de données. Vous vérifiez ces fichiers de migration dans SVN.
Dans mon projet actuel, nous ne développons pas l'application dans Ruby, mais nous utilisons toujours Rails pour gérer la base de données. Je ne le ferais pas autrement.
la source
Cela a déjà été discuté sur stackoverflow: /programming/2750278/sql-server-2008-create-database-script-schema-data-with-command-line
En outre, cet article externe fournit des informations supplémentaires http://www.sqlteam.com/article/scripting-database-objects-using-smo-updated ainsi qu'un exemple de code sous la forme d'une application Windows.
Puisque ce que vous voulez faire est quelque chose que j'ai fait moi-même pour MS Access, je vais vous dire ce que j'ai fait au cas où cela vous donnerait quelques idées: j'ai écrit un module appelé Ado2Xml qui convertit le schéma et les données de tout ADO -Base de données accessible en xml, et inversement. Cependant, il ne connaît que les tables et les vues; pas de procédures stockées, pas de déclencheurs, rien. Quoi qu'il en soit, dans votre cas, ce module est remplacé par l'outil que vous trouverez probablement qui fait ce que vous voulez avec MS-SQL. Ainsi, à chaque lancement de mon application, il compare l'horodatage de la base de données à l'horodatage du fichier xml enregistré; si le fichier xml est plus récent, il détruit la base de données et appelle Ado2Xml pour le recréer à partir du fichier xml. Lorsque mon application se termine, elle fait l'inverse: elle invoque Ado2Xml pour exporter la base de données dans le fichier xml. Réellement, les objets ADO qui extraient le schéma de base de données sont pour une raison terriblement lente, ce qui entraîne un certain temps pour le processus d'exportation. Donc, afin d'éviter d'avoir à attendre à chaque fois que mon application se termine et que Visual Studio passe de la disposition de débogage à la disposition d'édition, juste avant la fin, mon application lance une application externe pour effectuer l'exportation, afin qu'elle puisse se terminer immédiatement.
la source
Oui, j'ai utilisé un outil similaire (développé en interne) sur un projet précédent. Il scripterait toutes les tables, vues, sprocs, déclencheurs, etc. dans des fichiers .sql individuels. Ensuite, nous avons eu un script qui s'exécutait tous les soirs pour «valider» que tout dans notre base de données «développement» se reflétait dans le contrôle des sources.
Ainsi, le flux de travail normal consiste à modifier votre code, à modifier les tables et les sprocs correspondants dans la base de données de développement selon les besoins, puis à exécuter l'outil que nous avions qui actualiserait tous les fichiers .sql scriptés. Vous devriez alors tout enregistrer en même temps.
Le problème était que si vous oubliez d'exécuter l'outil, le code "fonctionnerait" (et les tests unitaires passeraient) car la base de données était "correcte", mais les nouveaux sprocs / tables ne seraient pas le contrôle de code source.
Donc, tous les soirs, nous avons un script qui a fait une vérification du code source, puis rand l'outil pour rafraîchir tous les scripts. S'il y avait une différence, cela signifie que quelqu'un a oublié de vérifier ses modifications et une notification par e-mail a été générée. C'était essentiellement un moyen de s'assurer que nous n'oublions pas de garder le contrôle de la source à jour.
C'était un peu ennuyeux car il était difficile de travailler sur des changements qui s'étalaient sur plusieurs jours, mais c'était mieux que de ne rien avoir ...
la source
Then, we had a script that ran every night to "validate" that everything in our "development" database was reflected in source control.
? Merci pour votre réponse.