juin 04 2010

[Visual Studio 2010] Déploiement Web Partie 8 - Déploiement de bases de données avec un Web Package

Suite de la série de billets sur le déploiement Web avec Visual Studio 2010 :

Visual Studio 2010 vous permet de déployer votre application avec toutes ses dépendances, y compris les dépendances de base de données sur SQL Server. En indiquant juste la chaîne de connexion de votre base de données Visual Studio 2010 va automatiquement scripter les données ainsi que le schéma de la base et l'ajouter au Web Package. Visual Studio 2010 vous permettra également de fournir des scripts SQL personnalisés et de les exécuter dans un ordre que vous aurez défini lors du déploiement sur le serveur de destination. Une fois votre base paramétrée dans le Web Package, avec vos paramètres IIS et le contenu Web, vous pouvez choisir de le déployer via le gestionnaire IIS sur un serveur de destination en fournissant une chaîne de connexion différente au moment de l'installation. Le schéma ci-dessous récapitule le contenu embarqué dans un Web Package pour le déploiement d'une base de données :

 

Déploiement d'une nouvelle base

Regardons l'écran Package/Publish SQL dans les propriétés du projet à déployer (notez bien qu'il concerne à la fois la création de Web Packages et l'outil de publication, car tous deux utilisent WebDeploy) :

 
 

Cet écran va nous permettre de spécifier les paramètres qui déterminent si et quels scripts seront exécutés lors du déploiement. Il est décomposé en deux parties : Database Entries (ci-dessus) et Database Entry Détails (ci-dessous). La première vous permet de sélectionner la base de données à déployer et la seconde permet de paramétrer celle-ci. Dans la partie Database Entries, vous pouvez ajouter ou supprimer une base de données à déployer, mais également utiliser la fonction "Import from Web.Config". Cette option, bien pratique, va parcourir les Connections Strings présentes dans votre Web.Config pour déterminer quelles sont les bases utilisées par votre application. Par défaut, pour les bases détectées, le suffixe "-Deployment" est ajouté.

 

Une fois la base ajoutée ou importée, il faut maintenant paramétrer son déploiement dans la partie Database Entry Details selon les paramètres disponibles détaillés ci-dessous.

  • Connection string for destination database : vous permet de spécifier la chaîne de connexion à la base de données sur laquelle s'effectuera le déploiement. Notez l'avertissement de Visual Studio : il s'agit bien d'indiquer la base pour le déploiement, vous ne devez pas oublier de modifier la Connection String dans le fichier Web.Config (ou utiliser ce merveilleux outil qu'est la Transformation de fichier Web.Config, bien sûr).
  • Pull data and/or schema from an existing database : par défaut cette case est cochée pour toute base importée du fichier Web.Config. Lorsqu'elle est cochée, elle permet aux scripts de la grille du dessous d'être automatiquement exécutés lors du déploiement de la base.
  • Connection string for the source database : si l'option précédente est cochée, vous devez alors indiquer la Connection String pour la base de données source.
  • Database scripting options : vous avez trois options disponibles : "Schema Only" pour générer automatiquement les scripts permettant de déployer uniquement la structure de la base, "Schema and Data" pour en plus de la structure, déployer les données de la base source sur la base de destination, enfin "Data Only" pour déployer uniquement les données. Si vous comptez déployer la base de donnés ASP.NET Membership par défaut, il vaut mieux vous tourner vers cet article MSDN.
  • Database Scripts : vous permet de spécifier les scripts à exécuter lors du déploiement. Par défaut les scripts générés automatiquement sont sélectionnés. Mais vous pouvez en ajouter d'autres pour des opérations plus complexes.
 

Dans le cas de notre application WebApplicationBidon, un simple Import form Web.Config a suffi, ainsi que la saisie de la chaîne de connexion de destination. Lors du déploiement du Web Package, la base est bien déployée.

 

Déploiement d'une base existante

La section précédente décrit comme déployer une nouvelle base de données sur l'environnement de destination. Généralement, il s'agit plutôt de mettre à jour une base de données existante. La partie se complique donc un peu car on ne peut générer aussi facilement des scripts automatiques pour cela.


info

Si vous souhaitez supprimer la base de données de destination avant de déployer la base de données source, il faut ruser un peu. Éditez avec Visual Studio ou un éditeur de texte votre fichier .Csprof (ou .Vbproj). Dans la partie "PublishDatabaseSettings", ajoutez la property ScriptDropsFirst="True".

 

Pour déployer uniquement des modifications sur une base de données existante, rien de plus simple : il suffit de décocher dans la grid Database Scripts tous les scripts générés automatiquement. Ensuite à vous d'ajouter vos propres scripts SQL et dans l'ordre que vous souhaitez.

Tags: , , , , ,

Commentaires

1.
Xavier Xavier France says:

Bonjour,

Je voudrais savoir si le déploiement de BD peut s'intégrer :
- dans un setup d'application Windows,
- à moins qu'il ne soit possible de faire un setup spécifique pour le serveur de BD SQL Server, sans que l'installateur soit obligé d'exécuter le script de génération de la BD dans Management Studio de SQL server 2008.

De plus dans ce cas, quelle version de VS 2010 minimum faut-il ? Professional ou Premium ?

Merci, cordialement,

Xavier

2.
Nicolas Nicolas France says:

Hello,

Le déploiement d'une base de données peut se faire :
- dans un projet setup
- grâce aux Web Packages
- manuellement via des scripts
- ...

Il y a beaucoup de solutions en fait. Je t'invite à consulter ce billet (msmvps.com/.../...ect-building-and-deployment.aspx ) qui présente le nouveau type de projet dans Visual Studio 2010 : Database Project. C'est l'idéal pour le déploiement de base de données et la gestion du versionning


Concernant le déploiement en général, une version Pro devrait suffire. Mais pour aller plus loin, une version Premium est conseillée (cf le comparatif des différentes version : www.microsoft.com/france/visualstudio/products).

En espérant t'avoir aidé.

Les commentaires sont clos