Как я могу использовать команду dtsExec в хранимой процедуре для выполнения пакета ssis, передавая всю конфигурацию из таблицы? - PullRequest
0 голосов
/ 16 ноября 2018

Я использую данную командную строку для выполнения пакетов ssis в sp на сервере sql.

SET @dtsExecCmd = @DTSEXECCMDPATH + ltrim(rtrim(@ssisPkgFilePath)) + '" /CONFIGFILE "' + ltrim(rtrim(@ssisCommonConfigPath)) + '"'

EXEC @result = master..xp_cmdshell @dtsExecCmd  

где,

@DTSEXECCMDPATH = 'G:\"Program Files (x86)"\"Microsoft SQL Server"\110\DTS\Binn\dtexec /F "'


@ssisPkgFilePath = '\\dtsx package path\package.dtsx'

@ssisCommonConfigPath =
'\\CommonConfigurationpath\Configuration.dtsConfig'

Теперь я хочу выполнить тот же пакет, передавконфигурация (присутствует в Configuration.dtsConfig ранее) из таблицы, как мне отредактировать эту командную строку, если @config содержит конфигурацию из таблицы.

1 Ответ

0 голосов
/ 21 ноября 2018

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

Нет параметра командной строки DTEXEC, который позволял бы вам определять таблицу SQL Server для загрузкиa config from.

Самый простой способ использовать конфигурацию пакета из таблицы SQL Server - открыть пакет в SSDT, перейти к службам SSIS / Package Configuration и настроить их.Тогда вам вообще не нужно ничего передавать в командной строке DTEXEC.

https://docs.microsoft.com/en-us/sql/integration-services/package-configurations?view=sql-server-2014#sql-server

Если вы не хотите вносить изменения в пакет и настаиваете на передачечерез DTEXEC тогда, я полагаю, вы могли бы написать оболочку, которая извлекает данные конфигурации из таблицы, и один за другим применяет эти конфиги, используя переключатель /SET.

Но я очень рекомендую и рекомендую вамобновить эти пакеты до модели развертывания проекта.Не тратьте свое время с этим старым методом.Вы просто вводите технический долг.

Вы также должны знать, что xp_cmdshell обычно считается проблемой безопасности.

...