MDX – Division par 0,Null et fonction Divide()

Intro

De temps en temps je dois faire du MDX…
Et à chaque fois que je me lance dans cette aventure périlleuse d’écriture de requête multi dimensionelle, je me dis que j’aimerais prendre du temps pour vraiment tout connaitre sur ce langage. Et espérer qu’un jour je puisse le maîtriser.

C’est pourquoi je vais essayer de publier des posts (enfin) sur ce sujet.
Mon premier sujet la division par 0, Null et la fonction Divide()

Règle de base

La division par 0 n’est pas possible et quand on fait de l’informatique on a la valeur NULL qui vient semer le trouble. Selon le language, les fonctions il faut prévoir ces cas.

Comment le moteur OLAP fonctionne et comment gère t-on ce cas en MDX ?

Bonne question !

Premièrement règle d’or  0 = null  pour le moteur AS.

WITH MEMBER [Measures].[NullValue] AS Null
MEMBER [Measures].[ZeroValue] AS 0
MEMBER [Measures].[CheckZeroEqualToNull?] AS
IIF( [Measures].[ZeroValue] = [Measures].[NullValue], true, false) SELECT
{
[Measures].[NullValue],[Measures].[ZeroValue],
[Measures].[CheckZeroEqualToNull?]
} ON COLUMNS
FROM [MyKioub]

Résultat de la requête :

mdx_zero_null_true

Conclusion : AS considère les valeurs nulles comme une valeur à 0.

Par conséquent si il fallait vérifier le dénominateur d’une division il suffirait de vérifier le cas du 0 uniquement…

Application

Les requêtes ci-dessous présentent les différents cas que l’on peut rencontrer.
En sachant qu’avec SSAS 2008 les vérifications sont faites  avec des IF.
Tandis qu’avec SSAS 2012 on a une toute nouvelle fonction DIVIDE().

WITH MEMBER [Measures].[Value] AS 100
MEMBER [Measures].[NullValue] AS Null
MEMBER [Measures].[ZeroValue] AS 0
MEMBER [Measures].[100 / 0] AS
 [Measures].[Value]/[Measures].[ZeroValue] ,Format_String = '#.#0'
MEMBER [Measures].[100 / Null] AS
 [Measures].[Value]/[Measures].[NullValue] ,Format_String = '#.#0'
MEMBER [Measures].[Null / Null] AS
 [Measures].[NullValue]/[Measures].[NullValue] ,Format_String = '#.#0'
MEMBER [Measures].[0 / Null] AS
 [Measures].[ZeroValue]/[Measures].[NullValue] ,Format_String = '#.#0'
MEMBER [Measures].[Null / 0] AS
 [Measures].[NullValue]/[Measures].[ZeroValue] ,Format_String = '#.#0'
MEMBER [Measures].[0 / 0] AS
 [Measures].[ZeroValue]/[Measures].[ZeroValue] ,Format_String = '#.#0'
MEMBER [Measures].[0 / 100] AS
 [Measures].[ZeroValue]/[Measures].[Value], Format_String = '#.#0'
MEMBER [Measures].[Null / 100] AS
 [Measures].[NullValue]/[Measures].[Value], Format_String = '#.#0'
MEMBER [Measures].[Check 100 / 0] AS
 IIF([Measures].[ZeroValue] = 0, Null,  [Measures].[Value]/[Measures].[ZeroValue]),Format_String = '#.#0'
MEMBER [Measures].[Check 100 / NullEqual0] AS
 IIF([Measures].[Null] = 0, Null,  [Measures].[Value]/[Measures].[ZeroValue]),Format_String = '#.#0'
MEMBER [Measures].[Check 100 / Null] AS
 IIF(IsEmpty([Measures].[NullValue]), Null,  [Measures].[Value]/[Measures].[ZeroValue]),Format_String = '#.#0'
MEMBER [Measures].[DivFunct] AS
 DIVIDE([Measures].[NullValue],[Measures].[Value] )

SELECT {
 [Measures].[Value],
 [Measures].[NullValue],
 [Measures].[ZeroValue],
 [Measures].[Null / Null],
 [Measures].[0 / Null],  [Measures].[Null / 0],
 [Measures].[0 / 0],
 [Measures].[100 / 0],
 [Measures].[Check 100 / NullEqual0],
 [Measures].[100 / Null],
 [Measures].[Check 100 / 0],
 [Measures].[Check 100 / Null],
 [Measures].[0 / 100],
 [Measures].[Null / 100],
 [Measures].[DivFunct]} ON COLUMNS,
, [MyDim].[MyAttribute].&[MyMember] ON ROWS
FROM [MyKioub]

Résultats:

MDX_Test_Divide

La fonction DIVIDE()

Cette fonctione est disponible depuis la version 2012 de SQL SERVER, et possèdes 3 paramètres :
Divide (<numerator>, <denominator> [,<alternateresult>])

WITH MEMBER [Measures].[Value] AS 100
MEMBER [Measures].[NullValue] AS Null
MEMBER [Measures].[ZeroValue] AS 0
MEMBER [Measures].[100 / 0] AS
DIVIDE([Measures].[Value],[Measures].[ZeroValue]) ,Format_String = '#.#0'
MEMBER [Measures].[100 / Null] AS
DIVIDE([Measures].[Value],[Measures].[NullValue]) ,Format_String = '#.#0'
MEMBER [Measures].[Null / Null] AS
DIVIDE([Measures].[NullValue],[Measures].[NullValue]) ,Format_String = '#.#0'
MEMBER [Measures].[0 / Null] AS
DIVIDE([Measures].[ZeroValue],[Measures].[NullValue]) ,Format_String = '#.#0'
MEMBER [Measures].[Null / 0] AS
DIVIDE([Measures].[NullValue],[Measures].[ZeroValue]) ,Format_String = '#.#0'
MEMBER [Measures].[0 / 0] AS
DIVIDE([Measures].[ZeroValue],[Measures].[ZeroValue]) ,Format_String = '#.#0'
MEMBER [Measures].[0 / 100] AS
DIVIDE([Measures].[ZeroValue],[Measures].[Value]), Format_String = '#.#0'
MEMBER [Measures].[Null / 100] AS
DIVIDE([Measures].[NullValue],[Measures].[Value]), Format_String = '#.#0'

SELECT {[Measures].[Value],
[Measures].[NullValue],
[Measures].[ZeroValue],
[Measures].[Null / Null],
[Measures].[0 / Null],
[Measures].[Null / 0],
[Measures].[0 / 0],
[Measures].[100 / 0],
[Measures].[100 / Null],
[Measures].[0 / 100], [Measures].[Null / 100] } ON COLUMNS
, [MyDim].[MyAttribute].&[MyMember] ON ROWS
FROM [MyKioub]

Résultat :
DIVIDE_MDX

Si on ne spécifie pas de troisième argument  "alternateresult" dans la fonction DIVIDE() alors cette dernière retournera toujours "(null)".
Vous pouvez donc remplacer ce comportement par défaut en spécifiant  une chaine de caractère ou un nombre positif.

Lien : FR – http://technet.microsoft.com/fr-fr/library/ms145626.aspx
EN – http://technet.microsoft.com/en-us/library/ms145626.aspx

Mosha wrote : http://sqlblog.com/blogs/mosha/archive/2007/01/28/performance-of-iif-function-in-mdx.aspx

CWebb wrote :http://cwebbbi.wordpress.com/2013/07/26/new-mdx-divide-function/

Retour Evènement – Les journées SQL Server 2013 (JSS 2013)

Un petit post pour remercier le GUSS, les sponsors et toute l’organisation de cet évènement.

Les JSS ont fêté leurs 3 ans d’existence en battant son record d’affluence :  365 professionnels ont assistés aux JSS 2013.

Quelques stats twitter : http://tweetbinder.com/rs/k3He8LfK9Yq.

Les phtotos : http://t.co/RI0keJizyI

Un petit clin d’oeil également à David Joubert  avec qui  j’ai eu le plaisir de préparer notre session sur SSIS.

On a voulu faire une petite session simple en montrant les principes de bases que l’on a dans SSIS.  Si cette session vous a plu on va pousser pour en faire une avec autre avec un niveau au dessus pour l’année prochaine.

Les webcasts sont bientôt disponibles.

Les slides : http://guss.pro/2013/12/07/slides-journees-sql-server-2013/

Il y a un sondage que vous pouvez remplir afin de nous faire remonter vos avis :  http://tinyurl.com/SondageJSS2013

JSS 2013 : Les Journées SQL Server 2013

La fin de l’année approche, le froid se fait ressentir, vos enfants commencent à découper des jouets dans les prospectus et les collent sur une feuille, vous pensez ce que vous allez faire pour ces fêtes…

Mais on n’échappe pas à une autre coutume les JSS, un évènement gratuit autour de SQL Server, cette édition 2013 se déroulera le 2 et 3 Décembre à Paris dans le centre de conférence de Microsoft.

JSS_2013

Avec David Joubert, nous animerons une session intitulée : SSIS – Design Patterns.

Demandez le programme !

planningJSS20131

Pour participez à l’évènement inscrivez-vous sur le site officiel : http://guss.pro/2013/12/02/journees-sql-server-2013/

Event – SQLSaturday à Paris 2013 : Samedi 14 Septembre

sqlsat251_web_thumb1Le SQLSaturday se déroulera pour la première fois à Paris le Samedi 14 Septembre 2013.

Au programme 3 parcours BI, DBA et Etudiant.

sans-titre

Et du beau monde en perspective …

Des sessions in english with famous people :

  • Jen Stirrup
  • Allan Mitchell
  • Hugo Kornelis

et nos compatriotes made in France :

  • Eiden Florian
  • Sauget Charles-Henri
  • Joubert David
  • Riehl Jean Pierre
  • Coutaud Romuald
  • Harel Patrice

et bien d’autre encore, un évènement à ne pas rater !

Inscription et plus d’infos :
http://guss.fr/
http://www.sqlsaturday.com/251/eventhome.aspx

SSRS – Répéter un élément d’une liste en tant qu’en-tête/pied de page

Le nom de cet article est peut être mal choisi mais il est difficile de donner un nom à ce genre de problème lié aux listes groupés, en-têtes/pied de page  (header/footer) et la répétition sur plusieurs pages.

Je vais essayer de vous l’expliquer.

Un petit rappel sur les listes dans SSRS.

Si on souhaite répéter un rapport sur plusieurs pages tout en étant libre de diposer des éléments on devra utiliser le composant List de SSRS.
Mais ce n’est pas tout, si on groupe cette liste par un champ/ID  on obtiendra des sous-ensembles de données qui vont être répétés au travers de la liste.
Et pour finir si on ajoute un Page Break sur ce fameux groupe (champs/ID) on aura comme résultat un ensemble de données par page.

Illustration

Pour illustrer rapidement, un petit exemple d’une fiche de renseignements d’une personne dans laquelle on afficherait également un tableau dans lequel on présenterait la liste de ses enfants.

Notre dataset renvoit un  jeu de données avec les informations liés à plusieurs personnes. Après avoir mis en place la liste, le groupement par numéro de sécurité social par exemple et le saut de page après chaque groupe on va obtenir  une seule fiche de renseignements par personne et par page.

De ce style :

Exemple

Bref tout va bien pour l’instant il n’y a rien de sorcier.

On peut tout de même se poser quelques questions.

"Si le tableau des enfants est trop grand ? Par exemple 10 enfants ? "

Réponse :

"Il débordera sur la seconde page. Bien évidemment pour une meilleure lecture du tableau on pourra répéter les en-têtes de colonnes du tableau."

Illustration :

Exemple2

Autre question.

"Mais si on souhaite que les  infos générales des parents s’affichent sur toutes les pages de la même manière que sur la première page ? Comme par exemple répéter le nom du parent au début de chaque page ?"

Illustration du résultat attendu :

Exemple3

Réponse :

"Haaa…Let me search :) !"

Désormais ne cherchez plus ! Voici un moyen de répondre a ce type de demande.

L’astuce : Mode d’emploi

Il semblerait que cela fonctionne uniquement avec SSRS 2012, les tests sous SSRS 2008 ne donnent pas le même résultat.

Il existe une petite astuce qui vaut ce qu’elle vaut mais n’hésitez pas à laisser vos commentaires avec différentes pistes pour faire la même chose.

Pour parvenir a mes fins j’ai dû ajouter les champs dans la liste et les cacher (Propriété Hidden du groupe static ou de la ligne).  Par la suite j’ai ajouté un header au rapport dans lequel  je place des TextBoxes.

Grâce à des expressions j’appelle les valeurs de ces champs cachés de la liste via un ReportItems!NomTextbox.Value.
Un bon renommage des noms textbox cachés facilite l’utilisation de la collection ReportItems!.

Un conseil : Ajoutez les champs à utiliser dans le tableau dans une cellule vide de l’en-tête de colonnes ou ajoutant une ligne au dessus de l’en-tête du tableau. Cachez la ligne / les champs n’hésitez pas jouer sur la taille de la police dans certains cas pour ne pas perdre d’espace.

Pourquoi faire ceci ?  Pour le RepeatOnNewPage de l’en-tête de colonnes du tableau, les champs étant cachés dans une zone qui sera répétée sur les nouvelles pages, alors les Textboxs du Header étant eux aussi répétés automatiquement pourront à chaque page récupérer la valeur des champs. Si vous ne le faites pas les champs texte du header n’afficheront pas de valeurs.

ssrs_repeat_list_header

Résultat :

ssrs_header_list_demo

Autre comportement : si vous oubliez  de faire un saut de page dans le groupe alors les textbox du header afficheront les valeurs du dernier groupe de la page.

NOTE I :  On ne peut pas utiliser deux ReportItems  dans une expression.

NOTE II : Cela fonctionne aussi si l’on souhaite répéter dans le footer.

PS : Cela fait un petit moment que je n’ai pas publié d’articles. J’ai débuté une nouvelle expérience dans ma petite vie et j’ai du laissé de côté certaines choses. L’envie ne manquait (presque) pas le temps par contre…

Les Journées SQL Server 2012 alias JSS 2012

Oyé Oyé brave gens, qu’il est bon de retrouver mon vieux pti’ blog avec ce genre d’annonce.
Comme l’année dernière je participerai aux Journées SQL Server 2012 organisé par le GUSS. Les inscriptions sont ouvertes depuis quelques temps et le programme est disponible sur le site officiel :

http://jss2012.fr/2012/10/31/ouverture-des-inscriptions/

Je profite également de ce post pour annoncer mon retour en France. Et oui ! le Canada c’est terminé depuis deux mois (déjà le temps passe vite :) ).Vous comprenez donc pourquoi j’ai un peu disparu de la blogosphère.

Je reviendrai bientôt avec des idées de posts plein la tête…

Reporting avec SQL Server 2012 et SharePoint 2010: Excel, PowerPivot, PerformancePoint, PowerView et Analysis Services

Plus le temps passe et plus le nombre d’outils augmente avec chacun leurs spécalités et leurs exclusivités.

Le couple SQL Server 2012 et SharePoint 2010 offre une ribambelle d’outils et de services qui nous permettent de produire des rapports. Le dernier outil en date est PowerView, l’offre de reporting de Microsoft commence à avoir de l’allure et ce n’est que le début …
Cet article vous aidera à replacer Reporting services (SSRS), PerformancePoint Services (PPS), PowerPivot (Add-in For Excel et For SharePoint), Excel et Analysis Services dans tout ce monde tableaux et de graphiques.

Commençons simplement avec… Excel 2010, rien d’extraordinaire un "simple" tableur qui permet de se connecter à des sources de données. Excel est "limité" … mais reste un bon point d’entrée de consommation, de calculs et d’analyses de données. Alors pour pallier aux limitations d’Excel on peut ajouter PowerPivot un simple Add-In gratuit. Cet add-in nous permet de nous connecter à plusieurs sources de données en même temps, récupérer des millions de lignes et en plus on est capable de mettre en relation ces données d’horizon diverses dans un seul et même modèle.

On pourrait s’arréter à là si on souhaite faire de la BI personnel dans son coin.

Sauf que le partage de l’information est primordial. On peut donc publier son classeur Excel Power Pivot sur SharePoint. Pour mettre en place PowerPivot sur un serveur SharePoint il faut installer une instance de PowerPivot via l’installation de SQL Server. Donc vous l’aurez compris PowerPivot est à la base un add-In Excel gratuit qui possède son "équivalent" server nécessitant un SharePoint et un SQL Server.

Parlons de SharePoint, il est capable de contenir de la BI. Depuis la version 2010, l’outil de dashboarding Performance Point est disponible, et depuis ses anciennes versions on peut intégrer des rapports de SQL Server Reporting Services. Il faut compter aussi sur ReportBuilder qui est un SSRS pour power user.

Donc oui dans SharePoint on peut mettre du PowerPivot, du Dashboard de Performance Point et des rapports classiques de SSRS. Voilà un vite tour d’horizon de ce qui existe.

Et Analysis Services  dans tout ça ? Pourquoi en parler de SSAS ?

Tout simplement parce qu’il sera dificile de ne pas y penser naturellement avec SQL Server 2012. En effet avec les nouveautés de SSAS  (mode tabulaire) de nouvelles combinaisons sont dorénavants possibles dans l’élaboration d’une solution BI.

Une ébauche de solution BI basée sur Excel et PowerPivot bâti par un business user peut vite se transformer en un cube de données hébergé sur un server disponible par un grand nombre de personnes. Et sur lequel on pourra se baser pour faire des beaux rapports PowerView.

Et pour clarifier un peu les choses sur SSAS :

  • PowerPivot For SharePoint : créé une instance SSAS PowerPivot par défaut le nom est .\POWERPIVOT. On peut passer par Management Studio pour le voir et il y a également module de gestion des classeurs dans SharePoint.
  • PowerView est capable d’avoir comme source de données des sources de type tabulaire : soit un classeur PowerPivot soit un cube SSAS mode tabulaire de SQL Server 2012.
  • Un classeur peut être "converti" en un cube SSAS tabulaire.
  • PerformancePoint peut utiliser un classeur PowerPivot comme source de données multi dimensionnel, et peut aussi gérer les cubes SSAS mode tabulaire.

Le screensot ci-dessous  vous montre l’instance PowerPivot et l’instance de SSAS tabulaire dans Management Studio.

L’avenir…Office 2013 et SharePoint 2013

Avec l’arrivée de Office 2013, Excel devient encore davantage le point d’entrée BI avec PowerPivot et PowerView en natif. Quant à SharePoint 2013 il reste l’outil de collaboration dans lequel on va stocker les différents rapports/dashboard. En sachant que PerformancePoint Services a connu pas mal de petits changements. Affaire à suivre…

Plus d’infos sur Excel 2013, l’ article de  David : http://joubertd.blogspot.ca/2012/07/office-15-excel-2013-powerpivot-et.html

Pour finir un schéma explicatif des relations entre les outils/services :

PowerPivot – Mode avancé

De retour de vacances…

J’avais en tête la préparation d’un article comparant PowerPivot (Excel Add-In) et SSAS Mode Tabular (SSDT).

Pour parler de ce que l’un a plus que l’autre (fonctionnalités, sécurité), quelle architecture utilisée ? Peut on passé d’une solution PowerPivot à SSAS Tabular ?

Bref décortiquer ces deux solutions…

Mais pour l’instant cet article est en Draft et je vais juste présenter une option de PowerPivot : Le mode avancé.

Comment activer ce mode ?

Très simplement dans votre fenêtre PowerPivot,  accédez au backstage (Menu en haut à gauche) et cliquez sur Switch to Advanced Mode.

Une fois le mode avancé activé vous allez voir un nouvel onglet dans votre ruban.

L’onglet Advanced contient plusieurs petite choses :

  • Perspectives : création de sous ensembles du modèle afin de fournir des jeux de données diverses. Souvent pour des besoins d’affaire et aussi pour faciliter la navigation.

  • Implicit Measures : Afficher ou cacher les mesures implicites, ce sont les champs que vous glissez/déposez dans le champs value de depuis excel
  • Summarize By : aggrégation sur la colonne sélectionnée
  • Default Field Set : sélection par défaut des colonnes utilsées dans un rapport Power View.
  • Table Behavior : Définiton des propriétés d’une table
    • Row Identifier
    • Keep Unique Rows
    • Default Label
    • Default Image
  • Image Url : Définir si une colonne contient l’URL d’une image

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.