5 votes

Automatiser le lien entre la base de données de Red Gate Source Control et le commit vers SVN

Nous avons une exigence pour laquelle nous voulons que Red Gate Source Control fasse partie de l'interface automatisée.

Nous aimerions relier par programme la base de données requise et effectuer un commit pour les modifications apportées à la base de données.

Est-ce possible ? Si oui, quelle interface doit-on utiliser ?

2voto

chrismay Points 405

Je sais que cette question est ancienne mais je fais exactement ce que vous décrivez.

J'ai un job qui s'exécute toutes les X minutes et qui met l'état actuel de la base de données dans le contrôle de version (pour nous c'est mercurial mais on peut faire exactement la même chose avec git ou n'importe quoi d'autre).

cd c:\data\SourceCodeDirectory
hg pull
hg update
if not exist "c:\data\SourceCodeDirectory\databaseName" mkdir "c:\data\SourceCodeDirectory\databaseName"
cd "c:\Program Files (x86)\Red Gate\SQL Compare 11"
sqlcompare /s1:DBServer /db1:databaseName /scr2:"c:\data\SourceCodeDirectory\databaseName" /synchronize

cd c:\data\SourceCodeDirectory\databaseName
hg add
hg commit -m "Database Changes" -u DatabaseSchemaUser
hg push

Toutes les modifications apportées à la base de données seront intégrées au contrôle de version dès l'exécution de cette tâche.

0voto

Wonko Points 171

C'est une question difficile. Selon la manière dont vous automatisez, vous pouvez utiliser une combinaison d'autres programmes. Par exemple, si vous disposez d'un système de CI, vous pouvez comparer automatiquement les fichiers dans le contrôle de source à une base de données active à l'aide de SQL Compare et lui demander de se synchroniser. Vous auriez besoin de l'interface de ligne de commande du système de contrôle du code source pour vérifier les modifications.

SQL Source Control, en tant que logiciel, a été conçu pour fonctionner uniquement de manière interactive.

Si vous voulez le faire en code (c#, VB), vous pouvez utiliser l'API du système de contrôle de la source pour vérifier les fichiers s'ils en ont un. Par exemple, SVN a "SharpSVN" et il existe également une API pour TFS.

0voto

alroc Points 11868

Peut-être que cela devrait être un commentaire, mais j'ai besoin d'un formatage et d'un espace qui ne sont pas disponibles ici.

Les "commandes automatisées" de ce type sont généralement risquées, car elles risquent de rompre l'atomicité et d'entraîner une perte d'informations. Considérons les scénarios suivants :

  1. Deux développeurs travaillent sur des modifications indépendantes de la base de données. Ils modifient leurs tables respectives en même temps, et cette automatisation les prend en charge et valide les modifications des tables en tant qu'unité. Comment séparer ces deux activités ?
  2. Lorsque cela se produit, quel est le nom qui figure dans le journal des modifications du référentiel ?
  3. Un développeur travaille sur une modification importante qui implique des changements dans plusieurs tables et procédures stockées. Cette automatisation permet de valider chacune d'entre elles indépendamment. Comment les "regrouper" pour la journalisation et l'audit, l'examen des changements effectués, etc.
  4. Dans mon environnement, chaque modification apportée au dépôt de code doit avoir un identifiant de modification enregistré dans le message de validation. Comment cela fonctionnerait-il ici ?

Je vous recommande de faire modifier cette exigence. Il y a trop de possibilités de conséquences involontaires (mauvaises).

0voto

David Atkinson Points 2465

Faites-vous cela dans le cadre d'un processus de construction automatisé ? Si c'est le cas, il serait utile de savoir quel outil de construction et quel outil de contrôle de source vous utilisez.

Vous devriez y trouver des ressources utiles :

http://www.red-gate.com/products/sql-development/sql-automation-pack/

Il existe des scripts NAnt et MSBuild scripts qui peuvent effectuer des tâches de construction/test utiles pour votre base de données SQL Server. Si vous voulez faire quelque chose de plus personnalisé, vous pouvez utiliser une combinaison de la ligne de commande de votre système de contrôle de version et de la ligne de commande SQL Compare.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X