sql server - manualmente - Cómo recuperar o restablecer la contraseña del paquete SSIS?
ejecutar paquete ssis desde sql server (7)
Tengo unos pocos paquetes de SSIS que estaban protegidos con contraseña (su nivel de protección es aparentemente EncryptAllWithPassword) por un desarrollador que dejó la empresa y ya no puede ser contactado, y al tratar de abrirlos se produce el siguiente error ya que la contraseña no puede ser suministrado:
Error al cargar ''Package.dtsx'': no se pudo eliminar la protección del paquete con el error 0xC0014037 "El paquete está encriptado con una contraseña. La contraseña no se especificó o no es correcta". Esto ocurre en el método CPackage :: LoadFromXML.
¿Hay alguna forma de abrir estos paquetes? Tengo acceso a la cuenta de administrador utilizada originalmente para crear estos paquetes y tengo otros paquetes encriptados por la misma persona pero usando una contraseña diferente que conozco.
Me puse en contacto con un representante local de Microsoft sobre el problema y hasta ahora solo me han vinculado a una página que describe cómo establecer o cambiar una contraseña , lo que no ayuda porque primero tengo que abrir el paquete o proporcionar la contraseña anterior. ¿Alguien ha estado en una situación similar antes o sabe cómo evitar este problema?
Cambia el Protection level
de Protection level
del paquete para encrypt
con sensitiveKey
y todo funcionará bien. :)
Estoy de acuerdo con el comentario de Michael sobre una adivinación de contraseñas o ataque de diccionario como un buen enfoque.
Estaba a punto de sugerir que también utilizara un entorno de computación en la nube como EC2 para dividir y conquistar ... ¡pero luego me di cuenta de que está atascado en Windows!
No creo que haya ninguna forma de recuperar el paquete si se usa EncryptAllWithPassword, todo el paquete está encriptado y no se puede decodificar sin contraseña. Uno puede intentar, por supuesto, adivinar contraseñas o ataques de diccionario esperando que el desarrollador use una contraseña débil.
Si es EncryptSensitiveWithPassword, puede abrir y luego volver a escribir las contraseñas de la cadena de conexión.
Parece que el paquete también se almacenó en SQL Server (base de datos msdb), exportándolo desde Integration Services al sistema de archivos nos permite abrirlo (con una advertencia sobre la pérdida de datos confidenciales). Esta solución funciona perfectamente para esta situación particular; principalmente necesitamos saber qué sucede en estos paquetes.
Simplemente, abra el paquete en el bloc de notas y cambie el nivel de protección de 2 a 1
<DTS:Property DTS:Name="ProtectionLevel">1</DTS:Property>
Use esta consulta para encontrar la contraseña de su paquete:
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%''
En los resultados, la única columna que se desplaza es el comando mirar a través de ese texto para / DECRYPT la próxima cadena después de que será la contraseña entre comillas.
ejecuta la consulta a continuación
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''
En la vista de resultados
verifique el texto "/ DECRYPT", las siguientes cadenas son la contraseña