Sur la base des informations présentées, vous faites tout correctement. Si vous êtes nouveau sur SSIS, une chose que je suggérerais, c'est que vous obteniez une copie de l'excellent complément BIDSHelper . Il possède d'excellentes fonctionnalités qui peuvent vraiment vous faire gagner du temps, notamment en ce qui concerne les configurations et les expressions.
J'ai créé un package de référence qui avait un gestionnaire de connexion Excel pointant vers C:\ssisdata\so_paulsmithjr.xls
et tout câblé.
À ce stade, je sais que les choses fonctionnent, il était donc temps de faire bouger le paquet. J'ai créé les variables suivantes et leurs valeurs
- Fichier actuel - C:\ssisdata\so_paulsmithjr.xls
- PlaceHolder - ##FILE_PATH##
- TemplateConnection -
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=##FILE_PATH##;Extended Properties="Excel 8.0;HDR=YES";
Une quatrième variable est définie comme une expression (clic droit sur la variable, fenêtre des propriétés. Définir l'évaluation comme expression =vrai et l'expression est ci-dessous)
- CurrentConnection -
REPLACE(@[User::TemplateConnection], @[User::PlaceHolder], @[User::CurrentFile])
J'ai comparé la valeur CurrentConnection à ReferenceConnection (qui est la valeur d'origine de la chaîne de connexion du gestionnaire de connexion Excel) et les choses correspondaient. À ce stade, si je devais changer la valeur de CurrentFile en C:\ssisdata\so_paulsmithjr - Copy.xls, cela serait automatiquement reflété dans la valeur de CurrentConnection.
La dernière astuce serait d'utiliser une expression sur le gestionnaire de connexion Excel. Encore une fois, faites un clic droit sur le CM et sous Propriétés, il y aura Expressions. Il ne s'agrandira pas car il n'y a rien en dessous. Au lieu de cela, cliquez sur les ellipses, puis sélectionnez la propriété ConnectionString et sélectionnez à nouveau les ellipses et cette fois faites glisser le @[User::CurrentFile]
variable. Cliquez sur OK x2 et maintenant votre gestionnaire de connexion est configuré pour être utilisé partout où la variable CurrentConnection le spécifie.
Est-ce que ça marche mieux ?