我有一个DTS包,它通过Execute Process Task对象调用可执行文件。可执行文件的路径可以根据安装包含此产品的产品的位置而更改。有没有办法使可执行路径动态化?
我尝试将表达式用于可执行属性。我将它设置为存储过程中出现的值,但它似乎只计算保存包时的值。我尝试设置DelayValidation = true,但它似乎并没有在运行时更新它。
答案 0 :(得分:2)
我相信你的包裹有问题。使用具体细节更新您的问题或与我的样本进行比较。
我从我的基本位置创建了7个子文件夹,在每个子文件夹中,我放置了一个批处理文件
@echo off
REM N replaced with value 0-6
ECHO C:\ssisdata\EXEC\N\RunMe.bat
这导致了像
这样的结构当我运行它们时,它只会报告硬编码的位置信息
我创建了一个SSIS包,其中包含For Loop Container
,内部是Execute Process Task
,与Script Task
C:\ssisdata\EXEC
摘要公共路径0
从0到6逐个增加值。循环使用强制更改可执行文件的位置C:\ssisdata\EXEC\0\RunMe.bat
这是基于上述变量的表达式。表达式为@[User::FolderBase] + "\\" + (DT_WSTR, 1) @[User::FolderChoice] + "\\RunMe.bat"
我在这里没有兴趣。我将标准输出到SSIS变量,我实际上使用C:\ ssisdata \ Exec \ RunMe.bat作为我的源,但下一步更新了这个屏幕截图。
在“表达式”标签上,我使用了我的变量@[User::CurrentExecutable]
并将其分配给Executable
属性。
我传递了我的@[User::Output]
变量并致电Dts.Events.FireInformation
以显示输出。