Поскольку вы спрашиваете, как изменить имя пользователя и пароль после развертывания пакета, я предполагаю, что вы уже знакомы с Каталогом служб 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