使用存储过程的输入参数调用SSIS包

时间:2012-07-18 01:32:20

标签: ssis dtexec

我有SSIS包,期望输入参数ID(整数)。 我需要使用存储过程执行此SSIS包,以便我可以传递ID的值。

DECLARE @Command varchar(1000)
    , @PackageLocation varchar(1000)
    , @PackageName varchar(1000)
    , @XmlID int

SELECT TOP 1 @XmlID = XmlId 
FROM dbo.ENROLMatchingXML
WHERE IsProcessed = 0

SET @PackageLocation = 'E:\SSIS\Package'
SET @PackageName = 'Match Names.dtsx'
SET @Command = 'DTEXEC'
    + ' /File "' + @PackageLocation + '\' + @PackageName + '"'

    + ' Set \Package.Variables[user::XMLID].Properties[Value];'  + @XmlID 
-- print just to show the string @command
print @Command

EXEC xp_cmdshell @Command

我是否需要将@XmlID强制转换为字符?如果我这样做,我收到错误 - 选项“Set”无效。

1 个答案:

答案 0 :(得分:4)

使用参数执行dtexec的正确语法是:

dtexec /f "PathToMyPackage\Package.dtsx" /set \package.variables[myvariable].Value;myvalue 

当您指定set命令选项时,似乎忘记了斜杠。