Metrika

3 марта 2011 г.

Как запускать зашифрованный SSIS пакет из джоба

При создании SSIS пакета в BIDS в свойствах есть опция ProtectionLevel со следующими возможными значениями:
  1. DontSaveSensitive - не сохранять в пакете паролей (имеются в виду пароли от соединений к БД и другим источникам и получателям данных);
  2. EncryptSensitiveWithUserKey - зашифровывать пароли с помощью ключа пользователя, который основан на профайле пользователя)
  3. EncryptSensitiveWithPassword - зашифровывать пароли с помощью пароля, который вводится в свойствах в поле PackagePassword;
  4. EncryptAllWithPassword - шифровать все введенным паролем;
  5. EncryptAllWithUserKey - шифровать все с помощью ключа пользователя;
  6. ServerStorage - сохранить пакет в базе msdb и защитить его с помощью ролей базы данных.
По умолчанию стоит EncryptSensitveWithUserKey.
Подробнее можно почитать тут: http://msdn.microsoft.com/en-us/library/ms141747.aspx
Последний пункт ни когда не использовал, т.к. предпочитаю запускать пакеты прямо из файлов, мне так удобнее. Но видимо, если пойти путем сохранения пакета в БД, то проблема пароля снимается.
А проблема состоит в том, что при использовании UserKey для шифрования SQL Server Agent должен быть запущен из под того же пользователя, что и делал сам пакет. Когда на сервере работает один пользователь проблем с этим не возникает. 
В моей практике был случай, когда я все делал из под доменного пользователя, у меня было порядка 20 пакетов, в которых стояло EncryptSensitiveWithUserKey. В один день упал контроллер домена, всех пользователей на домене админы заводили заново, имена всем дали те же, но профайлы естественно были другими. Пришлось все пакеты открывать и заново вводить все пароли к БД и FTP-соединениям. Даже страшно себе представить, что бы было, если бы в пакетах была выбрана опция EncryptAllWithUserKey...
На новом проекте пакеты делаются одним пользователем, а SQL Server Agent запущен из под другого и поменять это никак нельзя. Поэтому я стал использовать опцию EncryptSensitiveWithPassword
Для того, что бы запустить зашифрованный паролем пакет из джоба необходимо сделать следующее:
  1. В редакторе шага джоба выбрать type = SQL Server Integration Services Package;
  2. Package source = File system;
  3. Package - указать путь к файлу;
  4. На вкладке Command line (при ее открытии редактор попросит ввести пароль, который был использован для шифрования в пакете) выбрать Edit the command line manually. Для редактирования откроется поле Command line и там после опции /DECRYPT надо ввести пароль, т.е. /DECRYPT password.
  5. Нажать OK для сохранения шага.
Подробнее об опциях командной строки при запуске SSIS-пакетов можно почитать тут: http://msdn.microsoft.com/en-us/library/ms162810.aspx .

Комментариев нет :

Отправить комментарий