Вызов пакета служб SSIS с входными параметрами хранимой процедуры
У меня есть пакеты служб SSIS, которые ожидают идентификатор входного параметра (целое число). Мне нужно выполнить этот пакет служб SSIS с помощью хранимой процедуры, чтобы я мог передать значение идентификатора.
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 ответ
Решение
Правильный синтаксис для выполнения dtexec с параметром:
dtexec /f "PathToMyPackage\Package.dtsx" /set \package.variables[myvariable].Value;myvalue
Кажется, вы забыли косую черту, когда указали опцию команды set.