Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Exécution du même package SSIS avec différents paramètres à différents moments

Le défi avec l'utilisation d'une approche de fichier de configuration est que vous auriez besoin de modifier constamment le fichier. SSIS ne rechargerait pas le fichier de configuration après son démarrage, vous pourriez donc éventuellement avoir des tâches de 20h05 et 20h35 qui échangent des fichiers de configuration, mais cela va devenir désordonné et se casser à un moment donné.

Je gérerais cette situation avec des variables de ligne de commande (/set option in dtexec ). Si vous exécutiez le package à partir de la ligne de commande, il ressemblerait à quelque chose comme dtexec.exe /file MyPackage.dtsx Même si vous utilisez SQL Agent, en coulisse, il construit ces arguments de ligne de commande.

Cette approche suppose que vous créez deux tâches différentes (vs 1 tâches planifiées 2x par jour). AgentMyPackage2011 a une étape de tâche de SSIS qui se traduit par

  • dtexec /file MyPackage.dtsx /Set \Package.Variables[User::Year].Properties[Value];\"2011\"

et AgentMyPackage2012 a une étape de travail de SSIS qui se traduit par

  • dtexec /file MyPackage.dtsx /Set \Package.Variables[User::Year].Properties[Value];\"2012\"

Grâce à l'interface graphique, cela ressemblerait à quelque chose comme

Il n'y a pas d'interface graphique ou de sélecteur pour la propriété que vous souhaitez configurer. Cependant, puisque vous avez déjà créé un fichier .dtsConfig pour votre package, ouvrez ce fichier et recherchez une section comme

<Configuration ConfiguredType="Property" Path="\Package.Variables[User::Year].Properties[Value]" ValueType="Int32">
<ConfiguredValue>2009</ConfiguredValue>

Le fichier contient déjà le chemin d'accès à la "chose" que vous essayez de configurer, alors saisissez-le dans votre programme d'appel, puis désactivez la partie année de la configuration du package.

Enfin, un lien vers SSIS Configuration Precedence car il existe des différences entre le modèle 2005 et 2008. Je vois que vous avez indiqué 2008 dans votre ticket mais pour les futurs lecteurs, si vous utilisez à la fois /SET et une source de configuration (xml, serveur sql, registre, variable d'environnement) l'ordre des opérations varie selon les versions.