вызов пакета 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 к символу? В противном случае я получаю сообщение об ошибке Опция "Установить" недействительна.


person dmarkez    schedule 18.07.2012    source источник


Ответы (1)


Правильный синтаксис для выполнения dtexec с параметром:

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

Кажется, вы забыли косую черту, когда указали параметр команды set.

person Jeroen Bolle    schedule 18.07.2012
comment
Спасибо, Джерон! Да, я понял это после того, как опубликовал, и теперь у меня другая ошибка. Пакет служб SSIS не распознал входной параметр. Доступна запись OLE DB. Источник: Microsoft SQL Server Native Client 10.0 Hresult: 0x80004005 Описание: Процедура или функция '' ожидает параметр '@XmlID', который не был предоставлен.. - person dmarkez; 19.07.2012
comment
Когда возникает эта ошибка? Вы уверены, что параметр @XMLID содержит значение? - person Jeroen Bolle; 19.07.2012
comment
Теперь проблема решена. Переменная хранимой процедуры должна совпадать с именем параметра в службах SSIS (вместо Parameter0...). У меня также есть недопустимое местоположение пакета SSIS: D. - person dmarkez; 19.07.2012