Vous savez qu'une fois le site Web en ligne, on ne doit pas écraser la base de données. Lorsqu'on apporte une modification à la BD localement (ex : ajout d'un champ, changement du nom ou de la taille d'un champ, ajout de données), il faut conserver une liste des requête SQL permettant de reproduire ces ajustements en ligne.
Visual Studio vous aidera dans cette tâche.
Script de modifications
À chaque fois que vous modifiez la structure d'une table à l'aide de l'outil de Visual Studio, vous pouvez demander le script permettant de reproduire ces modifications.
- Effectuez les ajustements dans l'outil de Visual Studio.
- Cliquez sur « Mettre à jour ».
- Ici, vous devez normalement cliquer sur « Mettre à jour la base de données ». Mais avant de procéder, vous pouvez cliquer sur « Générer le script » pour obtenir le script de modification qui devra être tourné sur le serveur.

Le script obtenu est long et complexe. Il contient des instructions permettant de traiter à peu près tous les cas possibles, avec transfert des données originales vers une table temporaire, et tout, et tout. Vous n'avez pas besoin de tout ce code.
Vous devez retrouver la ou les instructions qui vous permettront d'exécuter exactement les modifications souhaitées.
Ex : pour ajouter le champ produit_prix dans la table produit, la seule instruction nécessaire est la suivante :
- Une fois le script obtenu, vous pouvez cliquer sur « Mettre à jour la base de données » pour que les modifications soient effectives sur votre BD locale.
Attention aux champs ne pouvant pas contenir des valeurs nulles
Dans l'exemple précédent, remarquez que le champ ajouté a la mention « null ». Pourtant, un prix ne devrait pas pouvoir être laissé à nul. C'est que lorsque vous ajoutez un champ dans une table contenant des données, ce champ prendra par défaut la valeur nulle pour les enregistrements existants. Le SGBD doit donc, dans ce cas, permettre l'ajout de valeurs nulles. Voici donc les options qui s'offrent à vous :
Peu importe l'approche choisie, vous devrez prendre en note l'ensemble des requêtes qui permettront d'ajuster les tables et les données sur le serveur. Les requêtes UPDATE permettant d'ajuster les données devront être montées « à bras » puisque Visual Studio ne génère que des requête INSERT.
Comparer la BD en ligne et celle qui est en dev
Visual Studio Ultimate est capable de générer un script permettant d'ajuster une BD pour qu'elle prenne la structure d'une autre BD. Aucune comparaison ne sera faite sur les données.
Pour pouvoir utiliser cet outil, vous devez :
- avoir accès au serveur en ligne afin de retrouver la BD actuellement utilisée. Attention : pour que la comparaison de schéma soit possible, la BD sur le serveur doit donner à la connexion les droits « Afficher la définition » (View Definition).
ou
- avoir pris soin de conserver dans votre dossier dev une copie de la BD (fichier .mdf présent dans le dossier App_Data) telle qu'elle était lors de la dernière mise en ligne.
Le deuxième scénario sera utilisé dans la démonstration suivante :
- D'abord, décompressez votre .zip contenant la base de données telle qu'elle était lors de la dernière mise en ligne. Selon les tests effectués par votre prof, Visual Studio est très chatouilleux ici. Pour que la comparaison fonctionne, le nom du dossier où vous décompresserez le site Web doit être très simple. Par exemple : test.
- Dans l'Explorateur de serveurs, faites un clic droit sur votre BD / Rechercher dans l'Explorateur d'objets SQL Server.
- Dans l'Explorateur d'objets SQL Server, faites un clic droit sur la BD utilisée dans votre solution puis choisssiez « Comparaison de schémas ».
- Dans la zone centrale, cliquez sur la liste déroulante « Sélectionner cible ».

- Sélectionnez « Choisir une base de données » puis cliquez sur « Nouvelle connexion ».

- Vous devez maintenant créer une connexion vers votre BD de comparaison. Entrez « (localdb)v11.0 » comme nom du serveur puis attachez la BD à comparer (vous devrez parcourir vos dossier jusqu'au fichier .mdf que vous avez décompressé dans votre dossier test). N'entrez pas de nom logique (problèmes rencontrés lors de mes tests).

- Cliquez ensuite sur « Comparer » dans le haut de la fenêtre.
- Les résultats de la comparaison apparaissent à l'écran. On voit dans cet exemple que sur le serveur local (BD de gauche, actuellement utilisée dans la solution), un champ a été ajouté par rapport à la BD telle qu'elle était lors de la dernière mise en ligne.

- Vous pouvez maintenant générer un script en cliquant sur l'icône « Générer un script » dans le haut de l'écran. Ici encore, vous devrez « débrousailler » le script afin de ne conserver que les requêtes qui effectueront les ajustements souhaités.
- Une fois le travail terminé, n'oubliez pas de détacher la base de données du dossier test sinon, vous aurez une foule de BD attachées dans SSMS et vous risquerez de prendre la mauvaise BD lorsque vous aurez besoin de générer le script SQL de la vraie BD.
Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.