从SSIS执行SQLCMD脚本使用变量执行进程任务

时间:2016-06-27 14:20:37

标签: sql-server ssis sqlcmd

我有一个包含SQLCMD元素的脚本的.sql文件。

我需要从SSIS包中运行它。

我无法从"执行 SQL 任务"执行它。

根据这个http://www.sqlservercentral.com/Forums/Topic818940-147-1.aspx我应该使用"执行过程任务"用:

可执行文件: C:\ Program Files \ Microsoft SQL Server \ 100 \ Tools \ Binn \ SQLCMD.EXE
参数: -S server -U user -P pass -i C:\ path \ to \ file.sql

这很好。

但是,我需要Arguments包含一个变量。我尝试过什么,它失败了。

Execute Process Task

参数: -S server -U user -P pass -i @ [User :: FileNameView]

错误:

[Execute Process Task] Error: In Executing "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE" "-S server -U user -P pass -i @[User::FileNameView]" at "", The process exit code was "1" while the expected was "0".

我的问题是:如何在Arguments字符串中包含变量?我应该采取不同的方法吗?

额外信息:
SQL Server 2008R2
我需要将其作为变量的原因是因为我将执行"执行过程任务"在"对于每个循环"能够执行文件夹中的所有.sql文件。

1 个答案:

答案 0 :(得分:1)

我相信你需要创建一个名为Arguments的表达式,其值为:

"-S server -U user -P pass -i " + @[User::FileNameView]

如果@[User::FileNameView]不是字符串,您可能需要进行一些类型转换。