Je me suis demandé comment structurer une réponse à cette question depuis sa publication initiale. Ceci est difficile car le cas de VS2010 ne consiste pas à décrire les caractéristiques et les avantages de l'outil. Il s’agit de convaincre le lecteur de modifier radicalement son approche du développement de bases de données. Pas facile.
Il existe des réponses à cette question de professionnels expérimentés dans les bases de données, avec un mélange de fond englobant DBA, développeur / dba et OLTP et entreposage de données. Il n'est pas viable pour moi d'aborder cette question pour chaque aspect du développement de la base de données en une seule fois. Je vais donc essayer de défendre un scénario en particulier.
Si votre projet répond à ces critères, je pense qu'il existe un argument convaincant pour VS2010:
- Votre équipe utilise VS2010 pour le développement d'applications.
- Votre équipe utilise TFS pour le contrôle de source et la gestion des builds.
- Votre base de données est SQL Server.
- Votre équipe a déjà, ou est intéressée par, les tests automatisés VS.
Si vous évaluez VS2010 pour le développement de bases de données, votre bible sera le Guide de base de données Visual Studio des Visual Studio ALM Rangers . Toutes les citations qui suivent et qui n’ont pas de références seront extraites de ce document.
C'est parti alors ...
Pourquoi le processus de développement de base de données est-il différent du développement d'applications?
Les données. Sans ces données embêtantes, le développement de la base de données serait un jeu d'enfant. Nous pourrions tout laisser tomber à chaque version et oublier cette gestion de changement gênante.
L'existence de données complique le processus de modification de la base de données car celles-ci sont souvent migrées, transformées ou rechargées lorsque des modifications sont introduites par les efforts de développement d'applications qui affectent la forme des tables de la base de données ou d'autres schémas de données. Tout au long de ce processus de changement, les données de qualité de production et l'état opérationnel doivent être protégés contre les changements susceptibles de compromettre son intégrité, sa valeur et son utilité pour l'organisation.
Quel est le problème avec SSMS?
Cela s'appelle SQL Server Management Studio pour une raison. En tant qu'outil autonome, il n'est pas pratique de gérer vos efforts de développement si vous souhaitez suivre les meilleures pratiques acceptées.
Avec les scripts uniquement, pour appliquer de manière significative les pratiques de contrôle de code source établies à votre développement, vous devez gérer les deux définitions d’objet (par exemple, un script CREATE TABLE) ET modifier les scripts (par exemple, ALTER TABLE) ET travailler sans relâche pour s’assurer qu’elles restent synchronisées.
La chaîne de versions pour les modifications apportées à une table devient assez rapide. Un exemple très simpliste:
-- Version 1
CREATE TABLE dbo.Widget (WidgetId INT, Name VARCHAR(20))
-- Version 2
CREATE TABLE dbo.Widget (WidgetId INT, Name VARCHAR(20), Description VARCHAR(50))
-- Version 3
CREATE TABLE dbo.Widget (WidgetId INT, Name VARCHAR(20), Description VARCHAR(100))
Par version 3, le script de changement de base de données contient:
ALTER TABLE dbo.Widget ADD Description VARCHAR(50)
ALTER TABLE dbo.Widget ALTER COLUMN Description VARCHAR(100)
Si la version en direct de cette base de données est la version 1 et que notre prochaine version est la version 3, le script ci-dessous serait tout ce qui était nécessaire, mais les deux instructions ALTER seront exécutées.
ALTER TABLE dbo.Widget ADD Description VARCHAR(100)
Les sprints de 5 ans sur 4 semaines s'ajoutent à certains scripts de version divertissants et nécessitent une manipulation plus manuelle afin de minimiser l'impact sur le temps de déploiement.
Alors, y a-t-il un problème avec SSMS? Non, c’est bon pour l’administration et la gestion de SQL Server. Ce qu'il ne prétend même pas faire, c'est d'assister un développeur de bases de données dans la tâche (parfois) très complexe de gestion du changement.
Si vous ne pouvez pas créer chaque version de la base de données à partir de la source et la mettre à niveau vers une version ultérieure, votre contrôle de code source est rompu. Si vous ne le pensez pas, demandez à Eric Sink .
Qu'en est-il de SSMS + <- insérer un outil de comparaison de schéma ->?
Il s’agit bien d’un pas dans la bonne direction qui supprime l’essentiel des efforts manuels nécessaires à la maintenance des scripts. Mais (et c'est un gros mais), il y a généralement des étapes manuelles.
Les outils de comparaison de schéma courants peuvent être entièrement automatisés et intégrés au processus de construction. Cependant, selon mon expérience, la pratique la plus courante consiste à exécuter une comparaison manuellement, à analyser les scripts résultants, à les archiver dans le contrôle de code source, puis à les exécuter manuellement pour les déployer. Pas bon.
Chaque fois que nous sommes faillibles, les êtres humains doivent participer au processus de construction ou de déploiement, nous introduisons des risques et nous rendons le processus non répétable.
Si vous et votre équipe êtes parmi les rares à disposer d'une comparaison et d'un déploiement de schémas entièrement automatisés, bravo à vous! Vous êtes les plus susceptibles d'être ouverts aux avantages offerts par VS2010 en tant que:
- Vous avez déjà accepté le fait que les étapes manuelles sont dangereuses.
- Vous voyez la valeur de l'automatisation.
- Vous êtes prêt à investir le temps nécessaire pour que cela fonctionne.
Si vous ne pouvez pas créer une construction en une seule étape ou déployer en une seule étape, votre processus de développement et de déploiement est interrompu. Si vous ne le pensez pas, demandez à Joel Spolsky .
Pourquoi VS2010?
La question posée par @NickChammas est de rechercher des fonctionnalités exceptionnelles démontrant pourquoi VS2010 change la donne pour le développement de bases de données. Je ne pense pas pouvoir argumenter sur cette base.
Peut-être comiquement, là où d'autres voient des failles dans cet outil, je vois de bonnes raisons pour l'adoption:
- Vous devrez changer votre approche.
- Vous et votre équipe serez obligés de travailler d'une manière différente.
- Vous devrez évaluer l'impact de chaque changement, en détail et en détail.
- Vous serez guidé pour rendre chaque changement idempotent .
Si vous êtes le seul administrateur de base de données sur un projet, gérant toutes les modifications apportées à la base de données, ce raisonnement doit sembler ridicule à la limite de l'absurde. Si toutefois vous pensez que @BrentOzar a un sens et que l'une des nouvelles règles est que Tout le monde est administrateur de base de données, vous devrez contrôler les modifications de la base de données de manière à ce que tous les développeurs de l'équipe puissent travailler.
Adoption de la base de données Les projets peuvent nécessiter un changement de mentalité (les vieilles habitudes sont difficiles à rompre ) pour certains développeurs ou au moins un changement de processus ou de flux de travail. Les développeurs qui ont développé des applications de base de données dans
lesquelles la base de données de production représente la version actuelle de la base de données devront adopter une approche basée sur le code source, le code source devenant le moyen de modification des bases de données . Dans les projets de base de données Visual Studio, le projet et le code source constituent la "version unique de la vérité" pour le schéma de base de données et sont gérés à l'aide de flux de travaux SCM susceptibles d'être déjà utilisés par le développeur ou l'organisation pour d'autres parties de la pile de leurs applications. Pour les données, la base de données de production reste sa "version unique de la vérité" comme il se doit.
Nous sommes arrivés au changement fondamental nécessaire pour adopter avec succès l'approche de développement de base de données VS2010…
Traitez votre base de données comme un code
Pas plus de changer la base de données en direct. Chaque changement de base de données suivra le même schéma qu'un changement d'application. Modifier la source, construire, déployer. Ce n'est pas un changement de direction temporaire de Microsoft, c'est l'avenir de SQL Server . La base de données en tant que code est là pour rester.
Le développeur de base de données définit la forme de l'objet pour la version de l'application, et non la manière de transformer l'objet existant dans le moteur de base de données en forme souhaitée. Vous vous demandez peut-être: comment cela est-il déployé sur une base de données contenant déjà la table client? C'est là que le moteur de déploiement entre en jeu. Comme indiqué précédemment, le moteur de déploiement utilise la version compilée de votre schéma et la compare à une cible de déploiement de base de données. Le moteur de différenciation produira les scripts nécessaires pour mettre à jour le schéma cible afin qu'il corresponde à la version que vous déployez à partir du projet.
Oui, il existe d’autres outils qui suivent un modèle similaire et pour des projets qui ne sont pas soumis aux contraintes que j’ai posées sur ma réponse, ils méritent une attention égale. Toutefois, si vous travaillez avec ALM Visual Studio et Team Foundation Server, je ne pense pas qu'ils puissent rivaliser.
Quel est le problème avec les projets de base de données VS2010?
Edit: Alors, quel est votre point alors?
@ AndrewBickerton a mentionné dans un commentaire que je n'avais pas répondu à la question initiale. Je vais donc résumer "Pourquoi devrais-je utiliser Visual Studio 2010 sur SSMS pour le développement de ma base de données?" ici.
- SSMS n'est pas un outil de développement de base de données. Oui, vous pouvez développer TSQL avec SSMS, mais cela ne fournit pas les fonctionnalités IDE riches de VS2010.
- VS2010 fournit un cadre pour traiter votre base de données en tant que code.
- VS2010 apporte l'analyse de code statique à votre code de base de données.
- VS2010 vous fournit les outils pour automatiser complètement le cycle de test construction / déploiement.
- SQL2012 et Visual Studio vNext étendent les capacités des projets de base de données. Familiarisez-vous avec VS2010 maintenant et vous aurez une longueur d'avance sur les outils de développement de bases de données de nouvelle génération.