Когда в пакете SSIS используется компонент для загрузки данных на FTP сервер, вполне может возникнуть ситуация, когда во время дебага все работает, а при попытке выполнить пакет с помощью SQL Agent или, например, создав задание по расписанию, компонент FTP возвращает ошибку “Password Not Allowed”.
Как видно на скриншоте, свойству ProtectionLevel присвоено значение “EncryptSensitiveWithUserKey”, что означает что пароли в пакете будут шифроваться ключом пользователя, который работает с пакетом SSIS. Соответственно, когда workflow запускается в виде задания или работы SQL Agent, оно запускается скорей всего под какой-либо сервисной учетной записью, которая, в свою очередь, не может получить доступ к паролям сохраненным и зашифрованным чужим ключом.
Решить эту проблему можно двумя способами. Для начала расскажу о том, который нравится меньше:
Способ №1
Свойству ProtectionLevel можно присвоить значение “EncryptSensitiveWithPassword”. То есть для защиты различной конфиденциальной информации в пакете будет использоваться пароль, назначаемый пользователем.
При вызове такого пакета, например с помощью утилиты dtexec, потребуется передать мастер-пароль в теле команды:
dtexec /f “c:\package_name.dtsx” /De password
Способ №2
Для хранения паролей можно использовать конфигурационный файл, данные из которого будут подгружаться в пакет на стадии выполнения.
На этапе создания новой конфигурации придется решить в каком виде она будет храниться. BIDS предлагает на выбор несколько вариантов, включая переменные, ключи реестра, XML-файл или базу SQL. В данном случае я остановился на последнем варианте.
Здесь потребуется выбрать коннектор к базе данных, указать в какой таблице будут храниться конфиги, если таковая отсутствует, то мастер предложит ее создать. Так как в одной таблице может храниться множество различных конфигураций, то помимо всего прочего мастер потребует создать ID конфигурации.
На следующем этапе нужно будет выбрать объекты, для которых в конфиге будут храниться различные атрибуты. В данном случае, я ограничусь исключительно именем пользователя и паролем доступа на FTP сервер.
По окончании работы мастера в указанной базе будет создана таблица с конфигом, где будет достаточно указать нужные логин и пароль, которые будут автоматически использоваться при запуске пакета под любой учетной записью.
В данном случае Login и Password – реквизиты для доступа к FTP серверу, которые нужно использовать. Более того, если компонент имеет одинаковое название во всех пакетах, один и тот же конфиг можно смело использовать для разных пакетов SSIS.
My little comment
}
Dear Soulmates