2012-07-18 3 views
1

У меня есть пакеты SSIS, ожидающие идентификатор входного параметра (целое число). Мне нужно выполнить этот пакет SSIS с помощью хранимой процедуры, чтобы я мог передать значение ID.вызов пакета 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 для символа? Если да, я получаю сообщение об ошибке - Опция «Установить» недействительна.

ответ

3

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

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

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

+0

Thanks Jeroen! Да, я понял это после того, как отправил сообщение, и теперь я столкнулся с другой ошибкой. Пакет SSIS не распознал входной параметр. Доступна запись OLE DB. Источник: «Microsoft SQL Server Native Client 10.0» Hresult: 0x80004005 Описание: «Процедура или функция» ожидает параметр «@XmlID», который не был указан. ». – dmarkez

+0

Когда возникает эта ошибка? Вы уверены, что параметр @XMLID имеет значение? –

+0

Теперь проблема решена. Переменная хранимой процедуры должна быть такой же, как имя параметра в SSIS (вместо параметра 0 ...). У меня также неверное расположение пакета SSIS: D. – dmarkez

Смежные вопросы