Les outils de Visual Studio pour gérer les modifications à une BD MS SQL

Une fois qu'un site Web a été mis en ligne, il est possible d'y apporter des modifications. Par exemple, on pourrait modifier un fichier .aspx ou .aspx.cs dans notre environnement de développement local puis écraser la version en ligne pour que les modifications soient effectives sur le serveur. Cependant, on ne doit pas écraser la base de données puisque des données pourraient avoir été ajoutées via le site Web. 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.

▼Publicité

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.

    Générer le script

    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 :

    MS SQL

    ALTER TABLE [dbo].[produit]

        ADD [produit_prix] DECIMAL (8, 2) NULL;

  • 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 :

  • Ajouter un champ pouvant être laissé à nul, modifier les données pour donner une valeur à chaque enregistrement puis modifier le champ pour qu'il ne puisse plus avoir la valeur nulle.

    Ex : pour ajouter le champ produit_prix dans la table produit, la seule instruction nécessaire est la suivante :

    MS SQL

    ALTER TABLE [dbo].[produit]

        ADD [produit_prix] DECIMAL (8, 2) NULL;

     

    UPDATE ...

    UPDATE ...

     

    ALTER TABLE [dbo].[produit] ALTER COLUMN [produit_prix] DECIMAL (8, 2) NOT NULL;

    ou

  • Ajouter un champ ne pouvant pas être laissé à nul et lui donner une valeur par défaut. Vous irez par la suite modifier les données de la table pour que le nouveau champ contienne les vraies valeurs pour chaque enregistrement. Mais attention : une fois la table ajustée sur le serveur, la mention de valeur par défaut demeurera en place et sera appliquée pour tous les ajouts futurs. À vous de bien gérer cela.

    Ex :

    MS SQL

    ALTER TABLE [dbo].[produit]

        ADD [produit_prix] DECIMAL (8, 2) DEFAULT 0 NOT NULL;

     

    UPDATE ...

    UPDATE ...

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 ».

    Comparaison de schémas

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

    Comparaison de schémas

  • 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).

    Comparaison de schémas

  • 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.

    Comparaison de schémas

  • 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.
Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories