[SSIS] Utiliser PowerShell pour remplacer DtUtil et le manifeste

Ceux qui lisent ce blog – merci à eux! – le savent, je ne supporte pas le manifeste de déploiement et utilise plutôt l’utilitaire DtUtil pour déployer mes packages.
Il arrive malheureusement que l’on me rétorque que le manifeste de déploiement dispose de nombreux avantages par rapport à mon utilitaire préféré.
…pour être honnête en réalité il n’en a que deux.

1) Il est plutôt joli
2) Il permet de modifier l’emplacement de la configuration dans le package

Si l’on omet le point numéro 1 (la cosmétique étant par nature subjective) on se dit que la seule chose sympatique que permet ce manifeste c’est d’éditer le lot pour changer sa node « Configuration ».

Quels seraient donc les specs de l’utilitaire « idéal »?

Il serait automatisable – ce qu’est DtUtil mais pas le manifeste – et pourrait déployer des configurations tout en modifiant leur chemin – ce que ne sait pas faire DtUtil. Il s’agirait donc d’un DtUtil capable de modifier un dtsx.

DtUtil et le manifeste supplantés par PowerShell!

L’API .NET SSIS et son objet Application permettent d’ouvrir un lot, de le modifier et de le déployer ou que ce soit (DTS, SQL, File), ils constituent donc une solution stable (pas d’édition de XML très sale) et… scriptable donc automatisable, grâce à PowerShell!

Un petit exemple

En trois temps:

1) On modifie le package

$app = new-object Microsoft.SqlServer.Dts.Runtime.Application
$pkg = $app.LoadPackage($oldPackagePath,$null)
$oldConfigPath = $pkg.Configurations[0].ConfigurationString
$pkg.Configurations[0].ConfigurationString = $newConfigPath

2)On déploie la configuration à sa destination

Copy-Item $oldConfigPath $newConfigPath

3) On déploie le package à sa destination (en fichier ici mais cela aurait pu être SQL)

$app.SaveToXml($newPackagePath,$pkg,$null)

Et voilà!

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