Développement configuration et déploiement avec SSIS 2012

SSIS 2012 offre une toute nouvelle manière de gérer la configuration des packages. Cette nouvelle façon de gérer la configuration est accompagnée d’un nouveau modèle de déploiement.

Cet article aura pour but de décortiquer ces nouveaux usages. Est ce qu’il y a un impact sur le développement ? sur la gestion des packages sur le server ? etc.

Côté développement

Petite piqûre de rappel, avec SSIS 2012 il n’ y a plus de fichier de configuration.

Dans SQL Server Data Tools on a maintenant des paramètres. Ces paramètres peuvent avoir deux portées (scope) soit une portée Package soit une portée Projet. Il faut voir la portée Projet comme des « variables globales » de notre projet SSIS et la portée package comme des « variables globales du package ». Par exemple : nom de server, chemin d’accès d’un emplacement sur le réseau etc.

Cela ressemble étrangement aux variables qu’on stockait dans notre fichier de configuration en 2008…
Attention, la notion de paramètre peut être mêlée avec la notion de variables, sauf que ce sont deux notions totalement différentes.

Déjà en terme d’utilisation et sans compter que les types supportés par les paramètres sont différents des types des variables. Par exemple il n’y a pas de type Objet dans les paramètres.
Les paramètres peuvent être utilisées dans les expressions et leur nomenclature diffère de celle des variables : @[$Project::ParameterName]

On peut voir les paramètres à deux endroits :

Si le scope est Projet : Solution Explorer, en double cliquant sur Project.params

Si le scope est package  : Onglet Parameters du package.

Ces paramètres nous aident donc à faire la configuration de nos packages SSIS. Donc oui il y a un impact sur le développement comme c’était déjà le cas en 2008. Il faut donc utiliser impérativement ces paramètres pour rendre le développement configurable et exécutable dans différents environnements.

Par contre tout les éléments d’une solution SSIS ne peuvent être paramétrés. On peut paramétrer la plupart des tâches du control flow et les connexions du Connection Manager.

En parlant des connexions, elles peuvent désormais être converties en connexions de projet, ce qui permet de les rendre disponibles à l’ensemble des packages du projet SSIS.

ProtectionLevel

Le niveau de proctection des packages SSIS, joue également un rôle dans cette floppée de configuration, la propriété ProtectionLevel existe toujours au niveau du package et elle est présente également dans les propriétés du projet.

Un dernier point intéressant, on peut créer différentes configurations dans notre projet SSIS, grâce au configuration Manager de Visual Studio,ce n’est pas nouveau on pouvait le faire en 2008. Personnellement je ne jamais touché à cela…

Mais grâce à ceci on peut changer la valeur des paramètres durant le Design Time. Donc être capable de déveloper et debugger selon différentes configurations.

Le déploiement

Une fois le développement terminé et les paramêtres en place on peut passer au déploiement.

Pour un simple développeur, un clic droit sur la solution puis deploy.

Mais il existe d’autres méthodes de déploiement. Sachez tout de même que lorsqu’on Build un projet SSIS, un fichier .ispac est créé dans le dossier Bin de votre projet.

Attention : si vous utilisez des configurations choisissez la bonne avant de compiler.

Si vous cliquez sur ce .ispac l’assistant de déploiement va se lancer.

Que contient ce fichier .ispac ?
Si vous changez l’extension du fichier en .zip ou .cab vous allez pouvoir voir le contenu. Vous aller retrouver tous les éléments de votre projet SSIS (package, paramètre, fichier xml de configuration)

Côté administration

Avec SQL Server 2012 on a un server dédié SSIS : Integration Services Catalog. Ce qui sous entend qu’on fait un déploiement en MSDB.

A partir de ce catalogue on peut configurer nos packages en attribuant des valeurs aux paramètres définis dans le développement. On peut avoir plusieurs jeux de valeurs de paramètres car on est capable désormais de définir des environements.

Ces environements pemettent donc d’exécuter des packages dans un certain contexte.

Pour chaque environnement on va définir un ensemble de variables.

Conseil : je ne connais pas encore quelles sont les bonnes pratiques à avoir avec cette nouvelle façon de procéder, mais je vous conseille de garder les mêmes noms de variables dans chaque environnement : donc de reproduire le même set de variables.

Et on va pouvoir configurer notre projet SSIS. Un clic droit Configure sur le projet.

Le premier panneau de configuration vous permet de modifier les différents paramètres de votre projet sauf qu’il faut avant tout faire des références aux envrionnements créés précédemment.

Donc rendez-vous dans le deuxième panneau References. c’est dans ce panneau que vous allez donner les différentes envrionnement de configuration.

Note : On peut directement créer des environnements via ce panneau.

Par la suite vous pourrez utiliser vos variables d’environnement dans le premier panneau.

Les ConnectionString

Comme vous pouvez voir dans mes screenshots, il y a un onglet dédié aux Parameters et un autre pour le Connections Managers.

Vous pouvez voir dans l’onglet parameters que j’ai paramétrer une connectionString et que l’on peut faire de mêne dans l’onglet Connection Managers.

Quelle approche prendre, paramétrer toutes les connectionString via un paramètre où modifer les connexions dans l’onglet Connection Managers ?

Réponse : les deux sont possibles à vous de voir vos connexions en fonction de votre besoin et d’ajuster votre configuration. Au final on reviendra à la même chose, une variable d’un de vos environnements peut changer les valeurs. Sauf que d’un côté une connectionString à changer et de l’autre, 6 propriétés (ConnectionString,InitiaalCatalog, Password,RetainSameConnection,ServerName,UserName).

Note: On peut toujours donner une valeur manuelle sans passer par des variables d’environnement.

Dans mon cas, la connectionString de ma source ne change pas mais je l’ai tout de même mis en paramètre, si il faut la changer un jour je peux le faire… Par contre mes connexions de destination sont variables car tout dépend de l’environnement.

Je vous conseille très fortement  de faire une validation de votre configuration : Clic droit Validate sur votre projet.

Conclusion

La prise en main de ce nouveau modèle de déploiement parait complexe au premier abord. Cela est dû je pense à plusieurs choses.
Dans un premier temps les appellations : « variables, paramètres, variables d’environement, configuration etc. » qui naturellement quand on l’entend nous fait penser à des choses existantes, par conséquent on peut être facilement confus, mêlé voir perdu … Un bon départ est d’oublier un peu ce que l’on sait et reconstituer le tout petit à petit en mettant les nouvelles choses au bon endroit.

La découverte de ce modèle me laisse penser qu’on a plus de flexibilité et permet à tous les intervenants d’un projet d’intégration de données avec SSIS, d’avoir leur part du travail dans de meilleurs conditions. Dans un deuxième temps, étant habitué à développer et à déployer de la même manière depuis un petit moment déjà, il est difficile d’absorber ce modèle. Mais les nouveaux réflexes s’apprennent vite et au fure et à mesure on peut se dire que  » ce truc est quand même pas mal fichu et qu’on galère moins qu’avant… » Pour l’instant c’est sûre que l’on est en période de changements, les premiers projets avec SQL Server 2012 pointent leur nez sans conpter que SSIS 2012 réserve encore pas mal de suprises je pense notamment au reporting intégré et une meilleure intégration des projets avec TFS.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s