Déploiement package SSIS 2008 R2 File System + Fichier de configuration + SQL Agent

Un article pour parler d’une chose assez abstraite (surtout lorsque l’on débute SSIS) : Le déploiement de SSIS.

Il existe différentes méthodes de déploiement avec SSIS 2008.

Pour infos la version 2012 offre une toute nouvelle approche.

Alors en 2008, le déploiement des packages SSIS peut paraitre farfelu.

Déjà il faut choisir un mode File System ou MSDB (Déploiement fichier ou base de données).

Je ne vais pas débattre sur le choix le plux optimisé. Tout dépend des organisations et à la bonne volonté de chacun.

Après il faut aussi penser à la configuration des packages :

  • Fichier Configuration
  • Variable d’environnement
  • Configuration Indirecte

Dans différents projets utilisant le mode File System et la configuration indirecte, il y a toujours pas mal d’interrogations.

Je vais essayer de tout expliquer … Retenez que tout est une histoire de contexte.

Développement des packages

Commencons par le début : le développement des packages. Le développeur travaille sur son poste, il cré des packages à la pelle. Il utilise des comptes pour se connecter aux sources et aux destinations. Un genre de DOMAIN\etl_user pour les sources : qui ne fait que lire la ou les différentes sources. Et ce même compte pour manipuler les données dans la destination / Staging etc.

Le développeur possède un compte active directory, DOMAIN\IamTheDev. Si ses packages utilisent divers fichiers de configuration DtsConfig (indirect ou direct) alors ils doivent contenir les ConnectionString vers les sources et les destinations. Qui dit ConnectionString dans un fichier de configuration dit : identifiants pour accéder aux données = DOMAIN\read_user + Mot de passe. Et oui ces informations sont stockées en claires dans le fichier.

Lorsque le développeur va exécuter un package dans BIDS, ce dernier étant configuré, va utiliser toutes les information de connexions contenues dans le fichier de configuration pour se connecter aux sources et aux destinations. Vu que le développeur possède les droits sur le fichier de configuration alors celui va être lu et utlisé dans ce contexte (exécution par le développeur sur son poste).

Le mode/type de déploiement déjà défini préalablement le développeur sait que l’on va déployer en file system et utiliser un fichier de configuration.

Sauf qu’à la création d’un package celui ci possède un ProctectionLevel qui par défaut est mis à EncryptSensitiveWithUserKey. Ce qui signifie que les informations du package sont encryptées avec les informations de la personne qui a créé le package, dans notre cas le développeur. Donc si on laisse cette propriété par défaut, et que l’on souhaite exécuter ce package ailleurs par un autre utilisateur ou  sur notre serveur SSIS il y aura à coup sûre un message d’erreur.

Par conséquent il faut changer le protectionLevel de vos packages : DontSaveSentive ou SaveSensitiveWithPassword.

Le déploiement en file system est assez simple:

  • Un bon vieux copier coller des packages
  • Utilisation du DeploymentManifest
  • Autres ?

Vers le dossier contenant les packages sur votre serveur. Idem pour les fichiers de configurations.

Exécution et planification des packages

Pareil plusieurs manières d’exécuter un package SSIS. (Ligne de commande DTUTIL, DTEXEC et SQL Agent) Concentrons nous sur le service SQL Agent, il  doit être lancé dans un premier temps. Dans SQL Agent, un job devra être créé. Ce job contiendra votre package SSIS.

Sauf que…

Je vais vous ai dit tout en haut de cet article que tout est une histoire de contexte. A coup sûre tout ne fonctionnera pas du premier coup. Surtout si vous avez des bases de données externes de votre serveur SSIS.

Pour bien exécuter un package, il faut comprendre que celui va appeller différente sources données. Et que le service SQL Agent de base ne pourra pas forcément y accéder.

C’est pour cela qu’il faut utiliser un proxy. Et un un proxy nécessite un credential qui est lui même lié à un compte active directory. : DOMAIN\etl_user

Un bon schéma vaut mieux qu’un long discours !

2 réflexions sur “Déploiement package SSIS 2008 R2 File System + Fichier de configuration + SQL Agent

  1. C’est vrai que tout ça nous paraît naturel, à nous autres « vieux », mais quand tu le mets sur un schéma c’est un bon rappel du bazar que c’est pour un novice.

    Promis je vais essayer de ne plus râler après les exploitants quand ils n’arrivent pas à faire les déploiements😉

    Et sinon de mon côté dans le cas général je fais:

    > Développement des packages en « Don’t Save Sensitive » + Authentification Windows des sources de données + Variable d’Environnement qui pointe vers un dtsConfig (qui ne contient donc pas de password puisqu’Auth Windows)

    > Déploiement en filesystem, utilisation d’un compte de service qui a accès aux répertoires et aux bases nécessaires

    • On demande souvent « Comment on déploie ? » je réponds souvent, « heu…passes moi une feuille ..au fait t’es plus Base de données ou Fichier ?  »
      🙂 Idem de mon côté configuration indirecte mais on n’a toujours pas du MS en source (AS400, Oracle, Informix). J’attend avec impatience un projet ou une preuve de concept 2012.

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