Comment faire pour récupérer ou réinitialiser package SSIS mot de passe?
-
09-09-2019 - |
Question
J'ai quelques packages SSIS qui ont été protégés par mot (leur niveau de protection est apparemment EncryptAllWithPassword) par un développeur qui a quitté l'entreprise et ne peut être atteint plus, et d'essayer de les ouvrir donne l'erreur suivante puisque le mot de passe peut « t fournir:
loading Erreur 'Package.dtsx': impossible de supprimer la protection de l'emballage avec l'erreur 0xC0014037 « Le paquet est crypté avec un mot de passe. le mot de passe n'a pas été spécifié, ou non correct. ". Cela se produit dans la méthode CPackage :: LoadFromXML.
Y at-il un moyen d'ouvrir ces paquets? J'ai accès au compte de l'administrateur à l'origine utilisé pour créer ces packages et ont d'autres paquets cryptés par la même personne, mais en utilisant un mot de passe différent que je sais.
J'ai contacté un représentant local Microsoft sur la question et jusqu'à présent, ils ont fait que me lié à une
La solution Je ne pense pas qu'il y ait un moyen de récupérer package si EncryptAllWithPassword est utilisé, l'ensemble du paquet est crypté et ne peut pas être décodé sans mot de passe. On peut essayer de deviner le mot de passe de cours ou des attaques de dictionnaire en espérant que le développeur utilisé le mot de passe faible. S'il est EncryptSensitiveWithPassword -. Vous pouvez ouvrir et puis juste retaper les mots de passe de chaîne de connexion
Autres conseils
exécuter la requête ci-dessous
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'
Dans la vue Résultat
vérifier le texte « / Déchiffrer », les prochaines chaînes suivantes sont le mot de passe
Utilisez cette requête pour trouver votre mot de passe package:
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%'
Dans les résultats de la seule colonne displated est de regarder de commande à travers ce texte / déchiffré la chaîne suivante après sera le mot de passe ci-joint entre guillemets.
Il semble que le paquet a été également stocké sur le serveur SQL (base de données msdb), exporter à partir des services d'intégration dans le système de fichiers permet d'ouvrir (avec un avertissement sur la perte de données sensibles). Cette solution fonctionne parfaitement pour cette situation particulière; nous avions besoin surtout de savoir ce qui se passe dans ces paquets.
Just, ouvrir le paquet dans le bloc-notes et modifier le niveau de protection 2-1
<DTS:Property DTS:Name="ProtectionLevel">1</DTS:Property>
Je suis d'accord avec le commentaire de Michael au sujet d'un mot de passe deviner ou attaque par dictionnaire comme une bonne approche.
J'étais sur le point de proposer également d'utiliser un environnement de cloud computing comme EC2 pour diviser et conquérir ... mais je me suis aperçu que vous êtes coincé sur les fenêtres!
Changer le Protection level
du paquet à encrypt
avec sensitiveKey
et tout ira bien fonctionner.
:)