Metrika

Показаны сообщения с ярлыком bids. Показать все сообщения
Показаны сообщения с ярлыком bids. Показать все сообщения

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 .

18 февраля 2011 г.

Как поменять область видимости переменной в BIDS (SSIS)

Если у кого то, как и у меня стоит английский BIDS, то под областью видимости я понимаю свойство Scope, которое поменять стандартными средствами невозможно. И я совершенно не понимаю почему!!!

Ну да ладно. Для своего пакета SSIS я создал порядка 10 переменных и потом заметил, что все имеют область видимости только в одном элементе, а нужны были во многих. Единственный путь поменять область видимости - это удалить переменные и создать заново, прям как работа над ошибками в школе ;)

Естественно этот путь меня не впечатлил, поэтому я открыл код пакета в текстовом редакторе. В очередной раз ужаснувшись увиденному, я понял, что этот путь тоже не лучший. Поэтому пошел в Google. И нагуглил инструмент под названием BIDS Helper. Детально я в нем не разбирался, судя из увиденного возможностей довольно много. Единственное, чего хотелось, скорее поменять область видимости, как это сделать написано тут. Область видимости поменял, правда после его установки при наведении на перемнную фокуса ввода перестало появляться окошко свойств, но я думаю это фича, а не баг.