J'utilise actuellement Tortoise SVN pour contrôler à la source une application Web .NET. Quelle serait la meilleure façon d'intégrer nos procédures stockées SQL Server dans le contrôle de code source? J'utilise actuellement VS 2010 comme environnement de développement et je me connecte à une base de données SQL Server 2008 R2 hors site à l'aide de SQL Server Data Tools (SSDT).
Ce que j'ai fait dans le passé, c'est d'enregistrer les procs dans un fichier .sql et de garder ces fichiers sous contrôle de source. Je suis sûr qu'il doit y avoir un moyen plus efficace que cela? Existe-t-il une extension que je peux installer sur VS2010, SSDT ou même SQL Server sur la machine de production?
Réponses:
Il existe des outils, tels que celui de Redgate , mais j'ai toujours trouvé que le mieux était d'enregistrer en tant que fichiers SQL, peut-être même dans un projet de base de données (SSDT?) Dans votre solution.
Parallèlement à cela, je suggère les lignes directrices suivantes:
if exists then drop
" approprié au débutVous pouvez initialement créer ces fichiers SQL en scriptant directement à partir de SSMS, et vous pouvez définir SSMS pour scripter tous vos "
drop
" et "create
" ainsi que vos autorisations.la source
L'enregistrement des fichiers SQL dans le contrôle de code source permet de contrôler uniquement les fichiers SQL. Il ne contrôle pas les modifications des objets de base de données réels, ni n'empêche les modifications simultanées du même objet de base de données par plusieurs utilisateurs (et je suppose que vous aimeriez aussi avoir cela sous contrôle). Ce que nous utilisons est un outil tiers ( version ApexSQL), il s'intègre à la fois avec SSMS et VS, vous pouvez choisir de travailler avec une version de base de données de l'objet ou avec une version de contrôle de source. Si vous modifiez une version de base de données, elle est automatiquement extraite uniquement pour vous, donc personne d'autre ne peut la modifier (elle ne fusionne pas les modifications des différents utilisateurs). Ce n'est que lorsque vous le réenregistrez, que d'autres peuvent le modifier. Et vous pouvez avoir votre version SC différente de la version d'un objet vivant (je l'utilise quand je pars pour la journée et je prévois de terminer les modifications et de la tester le lendemain)
la source
Utilisez RedGate Source Control pour le connecter à votre contrôle de source.
http://www.red-gate.com/products/sql-development/sql-source-control/
Il connectera votre SSMS directement à votre référentiel de contrôle de source et permet même de vérifier les données statiques.
Fonctionne comme un charme
la source
Essayez Ankhsvn , hautement recommandé et gratuit.
Depuis la page d'accueil:
la source
J'ai essayé à la fois RedGate et le projet de base de données de Visual Studio et je préfère stocker la définition de base de données dans le projet de base de données. Dès que la base de données fait partie de la solution, vous pouvez utiliser votre fournisseur de contrôle de source préféré. La plupart ont une excellente intégration de Visual Studio.
Avec les outils SSDT, vous disposez de la «dernière version» de la définition de la base de données, ce qui vous permet de faire facilement des comparaisons de schéma et de générer des scripts de mise à niveau de schéma.
Cela dit, le schéma n'est généralement qu'une partie de l'équasion. Dans la vraie vie, il s'avère que les bases de données contiennent déjà beaucoup de données. Et mes utilisateurs ont tendance à être plutôt déçus lorsqu'ils le perdent.
Donc, dès que j'ai déployé la version 1.0, le besoin se fait sentir de maintenir les scripts de mise à niveau. Parfois, ceux-ci contiennent simplement des modifications de schéma, mais souvent, je dois créer des valeurs par défaut basées sur le contenu d'une autre table, je dois libérer une contrainte particulière jusqu'à ce que j'amorce les données, etc. Habituellement, la simple mise à niveau du schéma ne la coupe pas tout à fait. Ma préférence est d'avoir ces scripts de mise à niveau dans un dossier séparé dans le projet de base de données aussi. Celles-ci ressemblent généralement à une «mise à niveau de la version 1.0 vers la version 1.1».
Mes bases de données ont toujours une table de référence qui m'indique le numéro de version actuel, donc je peux bloquer les mises à niveau incompatibles. La première déclaration de mes scripts de mise à niveau vérifie la version actuelle et renfloue si elle est différente de ce qui est attendu.
Un autre avantage des projets de base de données est de pouvoir déployer différents ensembles de données basés sur le même schéma. J'ai différents jeux de données pour le développement, l'équipe AQ, le test d'acceptation des utilisateurs et les tests d'intégration automatisés. Étant donné qu'un projet de base de données ne peut avoir qu'un seul script de post-déploiement, l'astuce consiste à créer un nouveau projet de base de données qui référence le projet `` maître '' et à intégrer l'ensemble de données personnalisé aux processus de post-déploiement de ce projet.
Ce sont mes 2 cents, quel que soit le processus que vous montez, il doit avant tout vous convenir à vous et à votre équipe et, espérons-le, vous soutenir dans la plupart des tâches courantes.
la source
J'ai fini par écrire un outil moi-même.
Il est disponible en téléchargement gratuit - http://www.gitsql.net
J'espère que cela aide d'autres personnes qui souhaitent atteindre le même objectif final.
Voici un article qui décrit comment contrôler la source SQL Server. http://gitsql.net/documentation-04_SQL_Server_and_GIT
J'ai essayé de le rendre aussi simple que possible. (3 écrans)
J'ai également - accidentellement - ajouté la possibilité de choisir sélectivement des objets individuels à importer - ou à exporter. Ce qui facilite grandement le développement.
J'apportais généralement une modification à une procédure stockée et à une table, puis j'exportais ces deux objets dans un répertoire GIT.
Ensuite, j'utilise Source Tree pour voir visuellement les changements, puis je les valide dans bitbucket si je suis content.
la source
Mon entreprise vient de développer ce nouvel outil ( gratuit ) qui vous aide à extraire facilement les scripts pour les bases de données SQL, peut faire des comparaisons , peut lancer WinMerge pour comparer rapidement les scripts à la base de données en direct, et peut également synchroniser les différences à la fois en mettant à jour les scripts ou en appliquant les changements à la base de données (sauf pour les tableaux, ce qui impliquerait plus de complexité et plus de risques).
Servantt est le WinMerge pour comparer les bases de données SQL Server aux scripts à version contrôlée.
Il soutient et encourage les meilleures pratiques dans le développement de logiciels:
(*) Les scripts sont enregistrés dans un dossier local qui peut être une copie de travail de Git, Subversion, TFS, Source Safe ou tout autre VCS.
Téléchargement gratuit: http://servantt.com
La version professionnelle (qui est toujours en cours de développement) sera une bête complètement différente - elle vise l'automatisation du déploiement (gestion des versions), pour automatiser des tâches telles que la mise à jour d'IIS, la mise à jour des services Windows, etc.
la source