SQL Server chez les clients – Gestion du cycle de vie d’une base de données

 

Les projets de développement mettant en œuvre des bases de données et de la Business Intelligence nécessitent un alignement avec le code applicatif, ainsi qu’une gestion du cycle de vie, et des versions comme une application classique.

Un ensemble d’outils Microsoft permet de mettre en place cette gestion efficace des développements de type SQL/BI et mettre en œuvre aussi une démarche d’ « Application Life Management » (ALM).

Problématique

  • Bénéficier d’une référence autre que l’environnement de production
  • Gestion des versions
  • Le temps de déploiement, déploiement incrémental, …
  • Gestion des opérations de déploiement(délais, déploiement incrémental..)
  • Traçabilité des tâches en cours
  • Qualité du code : vérifications syntaxiques, bonnes pratiques, …

Bénéfices

  • Evolution et adaptabilité du besoin d’analyse.
  • Un seul package de déploiement multi-destination
  • Déploiement incrémental
  • Temps de déploiement réduit
  • Création de package de déploiement autonome: Database, SSRS, SSIS, …
  • Travail collaboratif (source control)
  • Versioning du modèle de bases de données (source control)
  • Intégration et alignement avec l’application… (source control)
  • Suivi des activités : gestion des taches, reporting, … (source control

 

Les outils de bases : Visual Studio 2012 et SQL Server 2012 Data Tools (SSDT)

L’intégration de SSDT 2012 avec Visual Studio 2012 va permettre la gestion des projets de type SQL Server et Business Intelligence. L’utilisation de Visual Studio 2012 permettra aussi de gérer les solutions dans outils de Source Control tels que : Team Foundation Server, Visual Studio Online, ou autres…

Il existe 2 versions de SSDT qui doivent être installées en supplément :

  •   SSDT 2012 Version pour Visual Studio 2012– Uniquement pour le projet SQL Server Database

Updated SQL Server Data Tools January 2014support de SQL Server 2014 CTP2

  • SSDT BI – Intégration des projets BI dans VS2012

Microsoft SQL Server Data Tools - Business Intelligence for Visual Studio 2012

 

 Pour plus de détails sur les SSDT, consulter le blog SQL Server Data Tools Team Blog

SQL Server Data Tools intégré à Visual Studio est la nouvelle interface de développement, il offre l’ensemble des fonctionnalités de SQL Server management Studio et plus encore grâce à plusieurs modules et fonctionnalités :

 

Un environnement intégré à Visual Studio afin de ne pas rompre avec les habitudes des développeurs C# avec du code TSQL : Go to Definition, Refactoring, Références, ...

Aide aux développements : IntelliSense,  Table Designer, Simplification de la documentation, …

 

Mise à disposition de règle de Code Analysis afin d’évaluer la qualité du code automatiquement.

Vérifications au moment de la Build : syntaxiques, dépendances, …

 

Le principe de déploiement des bases de données

Le projet SQL Server Database génère lors de la Build un fichier de type .dacpac contenant l’intégralité du modèle de la base de données. Il servira de référence lors du déploiement à destination de SQL Server OnPremise ou SQL Azure.

Le script de déploiement incrémental est généré à la volée en fonction de la cible sur le principe suivant :

  

  1. Récupération du modèle de la base cible (Reverse Engineering création d’un schéma model)
  2. Comparaison des schémas source et destination, création d’un script incrémental
  3. Déploiement du script sur la base de données cible.

Les critères de comparaison et de génération du script incrémental sont personnalisables grâce à de nombreuses options. Un profil contenant tout le paramétrage du déploiement pourra être créé.

 

 L’avantage majeur de ce modèle de déploiement est que la génération de script incrémental est automatique. Le même package de déploiement peut donc être utilisé pour aligner plusieurs environnements sans effort supplémentaire.

 Le déploiement peut être réalisé de plusieurs façons toujours en s’appuyant sur SSDT :

-       Visual Studio : Publish Database

-       SQL Server Management Studio : Gestion des dacpac

 

-       Ligne de commande avec l’utilitaire SqlPackage.exe 

Déploiement simple d’une base de données

Sqlpackage.exe /Action:Publish  /SourceFile:mydatabase.dacpac; /Profile:profile.publish.xml

-       Tache MSBuild

La tache MSBuild va permettre de réaliser des scénarii de déploiement plus complexe (déploiement Multi Base de données, SSRS, SSIS) toujours en ligne de commande et en s’appuyant sur l’utilitaire SqlPackage.exe.

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Default" xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <DbSchemaDir></DbSchemaDir>
    <Environnement>local</Environnement>
  </PropertyGroup>
  <ItemGroup>
    <Database Include="DB_1">
      <PackageDacpacFile>$(DbSchemaDir)\DB_1\DB_1.dacpac</PackageDacpacFile>
      <PublishDBProfile>$(DbSchemaDir)\DB_1\DB_1.$(Environnement).publish.xml</PublishDBProfile>
    </Database>
    <Database Include="DB_2">
      <PackageDacpacFile>$(DbSchemaDir)\DB_2\DB_2.dacpac</PackageDacpacFile>
      <PublishDBProfile>$(DbSchemaDir)\DB_2\DB_2.$(Environnement).publish.xml</PublishDBProfile>
    </Database>
  </ItemGroup>
  <Target Name="CallGenerateAndExecuteForDatabase">
    <Message Text="List of Databases for GenerateAndExecuteIncremental : "></Message>
    <Message Text="%(Database.Identity)"></Message>
    <MSBuild Projects=".\GenererateAndExecuteIncrementalDatabasePackageEnv.proj"
       Properties="PackageFile=%(Database.PackageDacpacFile);ProfileFile=%(Database.PublishDBProfile)
              ;OutputPath=$(DbSchemaDir);"/>
    <Error Condition ="'$(MSBuildLastTaskResult)'=='False'"
    Text="GenererateAndExecuteIncrementalDatabasePackageEnv failed" />
  </Target>
  <Target Name="Default" DependsOnTargets="CallGenerateAndExecuteForDatabase"></Target>
</Project>

Les taches MsBuild peuvent aussi être utilisées pour le déploiement de rapports SSRS et de package SSIS grâce à des extensions :

-   MSBuild Extension Pack

-   SQL Server Reporting Services MSBuild Tasks

-   SSIS Msbuild

Déploiement en Ligne de commande :

   @%WinDir%\microsoft.net\Framework\v4.0.30319\MSBuild.exe ..\DeployAllDatabasePackagesByEnv.proj

 Avantages :

-   MSBuild présent au sein du .Net Framework sur chaque serveur

-  Uniquement des fichiers .xml, .cmd à déployer

-   Intégration avec Team Foundation Server

 

Intégration avec un outil de Source Control - ALM (Application Lifecycle Management)

L’intégration des projets Database / BI avec un outil de source control est indispensable pour la gestion des sources, les déploiements, les tâches afin d’améliorer la productivité de l’équipe projet.

Visual Studio s’intègre nativement avec Team Foundation Server (TFS), Visual Studio Online.

Ces produits disposent de l’ensemble des fonctionnalités nécessaires à la mise en place d’Application Life Management (ALM), nous allons nous focaliser sur les suivantes :

-       Gestion des déploiements / génération de package de déploiement

Le principe est de générer un package de déploiement en fonction des dernières modifications valider par les développeurs (Checkin) sur le projet et ainsi d’industrialiser les déploiements sur les différents environnements projets : Développement, Intégration, Recette, PréProduction, Production..

Plusieurs cas sont pris en compte :

Intégration Continue

A chaque validation (CheckIn), la nouvelle version est déployée sur un environnement de développement par exemple afin de s’apercevoir au plus tôt d’un problème d’intégration

Déploiement Manuel

Génération de package de déploiement

Afin de répondre à ces besoins des modèles de Build peuvent être personnalisés.

  

 

-       Gestion du code Source

En plus du versionning, la mise en place de de plusieurs versions (branches) va permette de gérer le différents cas de figures rencontrer lors du cycle de vie d’une application : Développement, Release, Correctif, …

Il permettra aussi d’aligner le développement Database avec le code de l’application.

-       Gestion des taches

La gestion des taches est aussi réalisée, ainsi un suivi des ressources est réalisable sans effort de reporting supplémentaire de la part des développeurs

 

La mise en œuvre d'une méthode ALM sur les projets de bases de données avec MCS

Sur l’ensemble de nos projets, nous mettons en œuvre de l’ALM afin d’améliorer la qualité des développements, de facilité la gestion des ressources et ainsi d’augmenter la productivité :

-          Retail : Système complet de gestion Front Office & Back Office

-          Banque d’investissement : Gestion d’une plateforme de production de PnL & Reporting

Une offre de service MCS dédiée à la mise en œuvre de ce type de solution « Database ALM » est maintenant disponible.

 

Pour plus d’informations sur les offres packagées Microsoft Consulting Services, rendez-vous sur https://www.microsoft.com/france/services

Plus d’informations sur les blogs « SQL Server chez les clients ».

 

Richard Prade, Consultant BI/SQL, Microsoft Consulting Services

Après plusieurs années passées au support technique, j’interviens en mission de conseil auprès des grands comptes sur des projets à haute criticité s’appuyant sur la suite SQL Server.