Как восстановить или сбросить пароль пакета SSIS? - PullRequest
6 голосов
/ 04 июня 2009

У меня есть несколько пакетов служб SSIS, которые были защищены паролем (их уровень защиты, по-видимому, EncryptAllWithPassword) от разработчика, который покинул компанию и больше не может быть достигнут, и попытка открыть их выдает следующую ошибку, поскольку пароль не поставляются:

Ошибка загрузки 'Package.dtsx': не удалось удалить защиту пакета с ошибкой 0xC0014037 "Пакет зашифровано паролем. пароль не был указан или не указан правильно. ". Это происходит в CPackage :: LoadFromXML метод.

Есть ли способ открыть эти пакеты? У меня есть доступ к учетной записи администратора, которая первоначально использовалась для создания этих пакетов, и другие пакеты зашифрованы тем же человеком, но с использованием другого пароля, который я знаю.

Я связался с местным представителем Microsoft по поводу этой проблемы, и до сих пор они связали меня только с страницей, описывающей, как установить или изменить пароль , что не помогает, потому что мне нужно открыть сначала пакет или укажите старый пароль. Кто-нибудь был в подобной ситуации раньше или знает способ обойти эту проблему?

Ответы [ 7 ]

16 голосов
/ 06 мая 2015

выполнить запрос ниже

SELECT sjs.command
FROM msdb.dbo.sysjobs sj
JOIN msdb.dbo.sysjobsteps sjs ON sj.job_id = sjs.job_id
WHERE sj.name = 'your package name'

В представлении результатов

проверьте текст "/ DECRYPT", следующие следующие строки - пароль

5 голосов
/ 28 мая 2015

Используйте этот запрос, чтобы найти пароль пакета:

SELECT step.command
FROM msdb.dbo.sysjobs job
JOIN msdb.dbo.sysjobsteps step ON job.job_id = step.job_id
WHERE step.command like '%Your Package Name%'

В результатах отображается только один столбец: команда просматривает этот текст для / DECRYPT следующей строки после того, как это будет пароль, заключенный в кавычки.

2 голосов
/ 05 июня 2009

Я не думаю, что существует какой-либо способ восстановить пакет, если используется EncryptAllWithPassword, весь пакет зашифрован и не может быть декодирован без пароля. Конечно, можно попытаться угадать пароль или словарную атаку, надеясь, что разработчик использовал слабый пароль.

Если это EncryptSensitiveWithPassword - вы можете открыть, а затем просто повторно ввести пароли строки подключения.

1 голос
/ 24 сентября 2015

Просто откройте пакет в блокноте и измените уровень защиты с 2 на 1

<DTS:Property DTS:Name="ProtectionLevel">1</DTS:Property>
1 голос
/ 04 июня 2009

Похоже, что пакет также хранился на SQL Server (база данных msdb), экспорт из служб Integration Services в файловую систему позволяет нам открыть его (с предупреждением о потере конфиденциальных данных). Это решение идеально подходит для данной конкретной ситуации; нам в основном нужно было знать, что происходит в этих пакетах.

0 голосов
/ 29 апреля 2016

Измените Protection level пакета на encrypt с sensitiveKey, и все будет работать нормально. :)

0 голосов
/ 12 июня 2009

Я согласен с комментарием Майкла о том, что поиск пароля или атака по словарю являются хорошим подходом.

Я как раз собирался предложить использовать среду облачных вычислений, такую ​​как EC2, для разделения и завоевания ... но потом я понял, что вы застряли на Windows!

...