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

使用存储过程上的输入参数调用SSIS包,ssis,dtexec,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

我的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”无效。

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

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

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

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

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

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

谢谢Jeroen!是的,我在发布后就发现了,现在我发现了一个不同的错误。SSIS包未识别输入参数。OLE DB记录可用。来源:“Microsoft SQL Server本机客户端10.0”Hresult:0x80004005说明:“过程或函数“”需要未提供的参数'@XmlID'。此错误何时发生?您确定@XMLID参数包含一个值吗?问题现在已经解决。存储过程变量必须与SSI上的参数名相同(而不是Parameter0…)。我还有一个无效的SSIS包位置:D。谢谢Jeroen!是的,我在发布后就发现了,现在我发现了一个不同的错误。SSIS包未识别输入参数。OLE DB记录可用。来源:“Microsoft SQL Server本机客户端10.0”Hresult:0x80004005说明:“过程或函数“”需要未提供的参数'@XmlID'。此错误何时发生?您确定@XMLID参数包含一个值吗?问题现在已经解决。存储过程变量必须与SSI上的参数名相同(而不是Parameter0…)。我还有一个无效的SSIS包位置:D。