Как установить параметры проекта на шаге SSIS в хранимой процедуре - PullRequest
2 голосов
/ 10 мая 2019

У меня есть хранимая процедура, которая принимает параметры, которые я должен установить для динамически создаваемого задания агента, отвечающего за запуск пакета служб SSIS.

Я пытался выполнить пакет непосредственно из своего приложения, но он должен быть запущен как-то иначе.user.

--Add database server
EXEC msdb.dbo.sp_add_jobserver
    @job_id =  @jobId,
    @server_name = @databaseServer;

--Add SSIS step
DECLARE @jobCommand nvarchar(max)
SELECT @jobCommand = N' /ISSERVER  "\SSISDB\MyPackage.dtsx" '
SELECT @jobCommand = @jobCommand + N' /SERVER ' + @ssisServer + N' /CHECKPOINTING OFF /REPORTING E'
--Set variables
SELECT @jobCommand = @jobCommand + N' /Par "\"$Package::varFundCode\"";"\"' + @fundCode + '\""'
SELECT @jobCommand = @jobCommand + N' /Par "\"$Package::varInitiatedBy\"";"\"' + @initiatedBy + '\""'
SELECT @jobCommand = @jobCommand + N' /Par "\"$Package::varPackageTimestamp\"";"\"' + @timestamp + '\""'
SELECT @jobCommand = @jobCommand + N' /Par "\"$Package::varReprint\"";"' + CONVERT(nvarchar(10), @isReprint) + '"'
SELECT @jobCommand = @jobCommand + N' /Par "\"$Package::varRunID\"";"\"' + CONVERT(nvarchar(20), @runId) + '\""'
SELECT @jobCommand = @jobCommand + N' /Par "\"$Package::varShouldEmail\"";"' + CONVERT(nvarchar(10), @shouldEmail) + '"'
SELECT @jobCommand = @jobCommand + N' /Par "\"$Package::varTestModeOn\"";"' + CONVERT(nvarchar(10), @testModeOn) + '"'
SELECT @jobCommand = @jobCommand + N' /SET \Package.Variables[User::varEmailRecipient].Value;"' + @emailRecipient + '"'
SELECT @jobCommand = @jobCommand + N' /Par "Projects::Connections[Database connection manager].Properties[ServerName]";"' + @databaseServer + ''
SELECT @jobCommand = @jobCommand + N' /Par "Project::Connections[Database connection manager].Properties[InitialCatalog]";"' + @dbName + ''


EXEC msdb.dbo.sp_add_jobstep
    @job_id = @jobId,
    @step_name = N'Execute vendor SSIS package',
    @subsystem = N'SSIS',
    @command = @jobCommand,
    @proxy_name = 'remittances_proxy'

как правильный синтаксис установки параметров и переменной соединения, потому что я получаю Аргумент "Projects :: Connections [База данных" для опции "параметр" недопустим.Параметры командной строки недействительны.Шаг не выполнен.

в журнале заданий или в идентификаторе среды: NULL.Описание: Тип данных входного значения несовместим с типом данных «Boolean».

Я пытался передать true / false и 0/1 для логических параметров?

1 Ответ

0 голосов
/ 11 мая 2019

Ссылаясь на следующую официальную документацию:

Вы также можете установить свойства диспетчера подключений с помощью параметров. Префикс CM используется для обозначения параметра диспетчера соединений.

В следующем примере свойство InitialCatalog диспетчера соединений SourceServer имеет значение ssisdb

/parameter CM.SourceServer.InitialCatalog;ssisdb  

В следующем примере свойству ServerName диспетчера соединений SourceServer задается период (.) Для указания локального сервера.

/parameter CM.SourceServer.ServerName;.

Исходя из этого, измените следующие строки кода

SELECT @jobCommand = @jobCommand + N' /Par "Projects::Connections[Database connection manager].Properties[ServerName]";"' + @databaseServer + ''
SELECT @jobCommand = @jobCommand + N' /Par "Project::Connections[Database connection manager].Properties[InitialCatalog]";"' + @dbName + ''

К

SELECT @jobCommand = @jobCommand + N' /Par CM.Databaseconnectionmanager.ServerName;"' + @databaseServer + '"'
SELECT @jobCommand = @jobCommand + N' /Par CM.Databaseconnectionmanager.InitialCatalog;"' + @dbName + '"'
...