Question

Pour autant que je sache, si je veux que ma base de données soit contrôlée par le code source, je dois alors archiver les scripts de modification pour chaque modification, puis les exécuter à partir d'une révision pour obtenir le DB correct.

J'essaie de créer un fichier de commandes à archiver qui permettra aux autres développeurs de l'équipe de reconstruire la base de données localement sans trop de problèmes. Je pense que sqlcmd est le moyen d'y parvenir. Je l’ai configuré pour énumérer tous les fichiers dans le répertoire de fichiers .sql et exécuter sqlcmd pour chacun.

Ma question est la suivante: qui a déjà fait cela auparavant et avez-vous un conseil sur la meilleure façon d’y parvenir? Est-ce que la façon dont je compte le faire est la meilleure ou est-ce qu'il y a une meilleure?

J'espère que ce n'est pas trop vague.

Merci d'avance,

Martin.

Était-ce utile?

La solution

Si vous utilisez un outil ORM tel que NHibernate, vous évitez le problème des scripts de modification de base de données car l'ORM peut recréer la base de données à partir de ses fichiers de mappage (sous contrôle de source).

C’est un moyen très simple d’avoir la version de base de données appropriée pour chaque révision.

Je recrée également l'ensemble du schéma lors de l'exécution de tests pour vérifier que mon état est cohérent.

J'ai récemment blogué à ce sujet: http: // www .tigraine.at / 2008/10/30 / sourcecontrol-et-les-bases-de-données-quand-orm-est-pratique-pratique /

Un jour, j’ai aussi eu un projet avec des scripts de mise à jour SQL, et nous venons de créer un petit outil d’aide (très basique) qui ouvrait le dossier, triait tous les scripts (nous les nommions 1 - foo.sql, 2 - bar.sql) et les a exécutés dans l’ordre par rapport à la base de données.

Si un développeur avait un nouveau script, il l'a simplement ajouté à la fin (34 - bla bla.sql).

Autres conseils

J'ai développé un petit utilitaire qui m'aide à mettre en version mes tables, SP, déclencheurs et vues en les exportant vers des fichiers texte: Exportateur SQL de gljakal . Il a un mode graphique et un mode ligne de commande (je peux donc l’utiliser dans des fichiers batch).

Fonctionne sur SQL 2005 +.

Une chose à prendre en compte est la nécessité de créer des objets dans l’ordre de dépendance. Vous ne pouvez donc pas simplement itérer des fichiers.

Nous avons fini par avoir un fichier de commandes répertoriant tous les objets par ordre de dépendance

En fait, nous avions deux fichiers de commandes, l'un appelé: createDBObject.bat:

:: Parameters Required:
:: %1 UserID
:: %2 Password
:: %3 Server
:: %4 Database
:: %5 file with scripted object
::
echo. >> CreateDBObjectsLog.txt
echo  %5 >> CreateDBObjectsLog.txt
osql -U%1 -P%2 -S%3 -i%5 -d%4 -n >> CreateDBObjectsLog.txt
echo * %5

puis l'autre avec la liste de tous les objets de la base de données:

:: Parameters Required:
:: %1 UserID
:: %2 Password
:: %3 Server
:: %4 Database
::
echo object  in %4 database on %3 server
echo Please Wait ...

if exist CreateDBObjectsLog.txt del CreateDBObjectsLog.txt


call createDBObject.bat %1, %2, %3, %4, ScriptedTable1
call createDBObject.bat %1, %2, %3, %4, ScriptedTable2
...
call createDBObject.bat %1, %2, %3, %4, ScriptedTableN

call createDBObject.bat %1, %2, %3, %4, ScriptedView1

call createDBObject.bat %1, %2, %3, %4, ScriptedSP1

etc

Nous utilisons maintenant le SQL Compare Pro qui automatise toutes ces tâches.

Vous pouvez également consulter la question associée: Y a-t-il un & # 8220; homme pauvre & # 8217; s & # 8221; Une alternative à RedGate pour la création de scripts dans l’ensemble du schéma de base de données?

Si votre entreprise est disposée à investir dans de bons outils, il vaut la peine de vérifier SQL Compare Pro . Il convient bien pour automatiser / simplifier les tâches que vous avez décrites. Ils ont un essai gratuit et fonctionnel de 14 jours, vous permettant de le tester avant d'investir de l'argent.

C’est un point intéressant concernant la possibilité pour le cadre de mappage d’Or de créer le schéma - je n’y avais pas pensé. En fait, j'utilise LINQ To SQL, mais je crois que le schéma et la base de données peuvent toujours être recréés via l'appel de CreateDatabase ().

Quelqu'un d'autre a-t-il adopté cette approche pour contrôler les sources de la base de données via LINQ To SQL?

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