如何执行可执行路径来自用户变量的Process Task

Cha*_*adD 12 ssis visual-studio-2005 bids

我有一个包含Process Task的SSIS包.流程任务需要执行批处理文件.批处理文件的位置因环境(开发,生产)而异.

如何动态设置Process Task对象的Executable属性值为用户变量? 在此输入图像描述在此输入图像描述

小智 22

我认为你需要创建一个变量,它接受文件夹路径和可执行文件名作为表达式进行评估.然后,您需要将此变量作为表达式赋值给.的Executable属性Execute Process Task.此外,您需要在设计期间拥有有效的可执行路径.

这是一个粗略的分步示例,说明如何将变量传递给Execute Process Task的Executable属性.该示例是使用SSIS 2008 R2创建的,并且还使用三个.bat文件来说明功能.尽管该示例位于SSIS 2008 R2中,但该逻辑应适用于SSIS 2005.

创建三个.bat文件,即Process_0.bat,Process_1.bat和Process_2.bat.请参阅截图#1.使用echo命令填充它们,如屏幕截图#2 - #4所示.

创建一个SSIS包.我在开头的YYYYMMDD_hhmm格式中命名了包,然后是SO代表Stack Overflow,后面是SO问题ID,最后是描述.这对我来说很容易在以后再提到.参见截图#5.

创建以下变量:参见屏幕截图#6.

  • ExecutableFileName - 此变量的类型为string.它将包含可执行文件名.

  • ExecutableFolder - 此变量的类型为string.它将包含可执行文件'文件夹路径.

  • ExecutableFilePath - 此变量的类型为string.不要键入此变量的任何值.这将是一个表达式,它结合了变量ExecutableFolder和ExecutableFileName来生成完整的文件路径.参见截屏#7.选择变量,然后按F4打开属性窗口.将EvaluateAsExpression True设置为并将Expression设置为@[User::ExecutableFolder] + @[User::ExecutableFileName]

  • ExecutableOutput - 此变量的类型为string.它将存储可执行文件的输出值.在这种情况下,.bat文件回显的值.

在包的控制流路径上,放置执行流程任务和脚本任务,如屏幕截图#8所示.

配置执行流程任务,如屏幕截图#9 - #11所示.在Task的Process部分,您需要为初始配置指定可执行路径.另外,指定StandardOutputVariable(这是针对此示例).在表达式部分,通过指定变量@ [User :: ExecutablePath]来覆盖可执行路径

在脚本任务中,替换Main方法,如屏幕截图#12 - #13所示.

执行包.您应该获得输出,如屏幕截图#14所示.它显示了.bat文件Process_0.bat与输出一起执行"Process 0".

现在,将变量ExecutableFileName的值更改为Process_1.bat.不要做任何其他更改.执行包.您应该获得输出,如屏幕截图#15 - #16所示.它显示了.bat文件Process_1.bat与输出一起执行"Process 1".

现在,将变量ExecutableFileName的值更改为Process_2.bat.不要做任何其他更改.执行包.您应该获得输出,如屏幕截图#17 - #18所示.它显示了.bat文件Process_2.bat与输出一起执行"Process 2".

希望有所帮助.

截图:

#1:

1

#2:

2

#3:

3

#4:

4

#5:

五

#6:

6

#7:

7

#8:

8

#9:

9

#10:

10

#11:

11

#12:

12

#13:

13

#14:

14

#15:

15

#16:

16

#17:

17

#18:

18