Модификация соединения с диспетчером информации из каталога SSIS из sql - PullRequest
2 голосов
/ 18 марта 2019

Есть ли способ обновить информацию диспетчера соединений из каталога ssis после развертывания с помощью кода SQL?

Я бы хотел сначала развернуть проект без конфиденциальных данных:

  • exec catalog.deploy_project ..
  • затем добавьте имя пользователя и пароль в проект каталога служб SSIS с помощью SQL ...

Ответы [ 2 ]

1 голос
/ 18 марта 2019

Поскольку вы спрашиваете, как изменить имя пользователя и пароль после развертывания пакета, я предполагаю, что вы уже знакомы с Каталогом служб SSIS, если не в документации , об этом говорится далее. Для установки имени пользователя и паролей через T-SQL используйте переменные окружения, причем переменная, содержащая пароль, помечена как конфиденциальная. Хранимая процедура SSISDB.CATALOG.SET_ENVIRONMENT_VARIABLE_VALUE используется для обновления значений переменных среды, в том числе помеченных как конфиденциальные, и может использоваться следующим образом.

  • Начните с создания среды. Для этого щелкните правой кнопкой мыши SSISDB и создайте новую папку. Затем в этой папке щелкните правой кнопкой мыши и создайте новую среду.
  • После этого щелкните правой кнопкой мыши среду и выберите Свойства , затем перейдите на панель Переменные . Создайте строковую переменную для имени пользователя и пароля, с переменной, хранящей пароль, установленной как Sensitive .
  • Далее щелкните правой кнопкой мыши пакет или проект в зависимости от области, в которой был определен менеджер соединений, и нажмите Настроить и перейдите на страницу Ссылки . Для этого добавьте новую созданную среду с помощью кнопки Add .
  • В окне свойств проекта / пакета перейдите на страницу Параметры и перейдите на вкладку Диспетчеры соединений . Найдите диспетчер соединений, который будет использовать переменные среды, щелкните правой кнопкой мыши многоточие в свойствах имени пользователя и пароля, установите переключатель в положение «Использовать переменную среды» и выберите соответствующие переменные.
  • Перед запуском пакета запустите хранимую процедуру SSISDB.CATALOG.SET_ENVIRONMENT_VARIABLE_VALUE, чтобы обновить переменные среды. Пример этого следующий.
  • Если этот пакет выполняется с использованием T-SQL из задания агента SQL или другого метода, привязайте к нему ссылку на среду, как показано ниже.

Пример:

DECLARE @usernameVar SQL_VARIANT = N'UsernameValue'
EXEC SSISDB.[CATALOG].SET_ENVIRONMENT_VARIABLE_VALUE @variable_name=N'Username', 
@environment_name=N'Environment Name', @folder_name=N'Environment folder', @value=@usernameVar

DECLARE @passwordVar SQL_VARIANT = N'PasswordValue'
EXEC SSISDB.[CATALOG].SET_ENVIRONMENT_VARIABLE_VALUE @variable_name=N'Password', 
@environment_name=N'Environment Name', @folder_name=N'Environment folder', @value=@passwordVar

--make sure environment mapped with @reference_id
DECLARE @execution_id bigint
EXEC SSISDB.[CATALOG].CREATE_EXECUTION @package_name=N'Package.dtsx', @execution_id=@execution_id OUTPUT, 
@folder_name=N'Project Folder', @project_name=N'PackageProject', @use32bitruntime=False, @reference_id=99

DECLARE @var0 smallint = 1
EXEC SSISDB.[CATALOG].SET_EXECUTION_PARAMETER_VALUE @execution_id,  @object_type=50, 
@parameter_name=N'LOGGING_LEVEL', @parameter_value=@var0 

--execute package
EXEC SSISDB.[CATALOG].START_EXECUTION @execution_id
0 голосов
/ 18 марта 2019

Есть ли способ обновить информацию диспетчера соединений из каталога ssis после развертывания с помощью кода sql?

Это возможно, поскольку все изменения в каталоге SSISDB выполняются с помощью хранимой процедуры..

Это сценарий SQL, сгенерированный SSMS во время изменения строки подключения:

DECLARE @var SQL_VARIANT
= N'Data Source=ServerName;Initial Catalog=dbName;
Provider=SQLNCLI11.1;Integrated Security=SSPI;Auto Translate=False;';

EXEC [SSISDB].[catalog].[set_object_parameter_value] @object_type = 20,
                                                     @parameter_name = N'_ConnectionStringParam',
                                                     @object_name = N'ProjectName',
                                                     @folder_name = N'FolderName',
                                                     @project_name = N'ProjectName',
                                                     @value_type = V,
                                                     @parameter_value = @var;

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...