2009-06-04 10 views
6

Ho alcuni pacchetti SSIS che sono stati protetti da password (il loro livello di protezione è apparentemente EncryptAllWithPassword) da uno sviluppatore che ha lasciato la società e non può essere raggiunto più, e provare ad aprirli dà il seguente errore poiché la password puo ' t essere forniti:Come ripristinare o reimpostare la password del pacchetto SSIS?

errore durante il caricamento 'Package.dtsx': Impossibile rimuovere la protezione pacchetto con l'errore 0xC0014037 "Il pacchetto è criptato con una password Il password non è stata specificata, o no è corretta.. ". Ciò si verifica nel metodo CPackage: LoadFromXML .

C'è qualche modo per aprire questi pacchetti? Ho accesso all'account amministratore originariamente utilizzato per creare questi pacchetti e avere altri pacchetti crittografati dalla stessa persona ma utilizzando una password diversa che conosco.

Ho contattato un rappresentante Microsoft locale sul problema e finora mi hanno collegato solo a uno a page describing how to set or change a password, il che non aiuta perché è necessario aprire prima il pacchetto o fornire la vecchia password. Qualcuno si è già trovato in una situazione simile o conosce un modo per aggirare questo problema?

+1

Ouch, sarei interessato a conoscere la risposta a questo anche come sospetto che non possa essere fatto senza un qualche tipo di hack. Non è un grande aiuto per te ora, ma potresti voler prendere in considerazione l'uso di un gestore di password/chiave di sicurezza all'interno della tua organizzazione per evitare questo problema in futuro. –

+0

Buona domanda! Avete usato qualche tipo di fonte sicura su questo? Potresti riuscire a trovare una versione non criptata e alcuni sviluppatori hanno persino messo un file con la password ... – RSolberg

risposta

2

Non penso che sia possibile ripristinare il pacchetto se si utilizza EncryptAllWithPassword, l'intero pacchetto è crittografato e non può essere decodificato senza password. Si può provare, naturalmente, a indovinare la password o attacchi di dizionario sperando che lo sviluppatore abbia usato una password debole.

Se è EncryptSensitiveWithPassword, è possibile aprire e quindi digitare nuovamente le password della stringa di connessione.

1

Sembra che il pacchetto sia stato anche memorizzato su SQL Server (database msdb), esportandolo da Integration Services nel file system ci consente di aprirlo (con un avvertimento sulla perdita di dati sensibili). Questa soluzione funziona perfettamente per questa particolare situazione; abbiamo principalmente bisogno di sapere cosa succede in questi pacchetti.

+0

Soluzione alternativa. –

0

Sono d'accordo con il commento di Michael su un indovinello di password o attacco di dizionario come un buon approccio.

Stavo proprio per suggerire di utilizzare un ambiente di cloud computing come EC2 per dividere e conquistare ... ma poi ho capito che sei bloccato su Windows!

+0

EC2 esegue anche Windows. (http://aws.amazon.com/windows/) E poi c'è Azure! (http://www.microsoft.com/azure/) – Michael

+1

così ci vai! Noleggia 1000 macchine e decifra la password. (e la password del tuo capo, che odiava la password del collega, ...) – Pat

14

eseguire la query di seguito

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' 

nel risultato View

di controllo per il testo "/ decifrare", i prossimi seguenti stringhe sono la password

+0

Grazie! Grazie! Grazie! –

+0

Grazie, Venky, è la soluzione perfetta per me. – cymorg

+0

Grazie a @Venky per l'aiuto con la soluzione perfetta del problema – PS078

3

Utilizzare questa query per trovare il pacchetto password:

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%' 

Nei risultati l'unica colonna spiegata è il comando guardare attraverso il testo per/DECRYPT la stringa successiva dopo che sarà la password racchiusa tra virgolette.

+0

La differenza tra la mia query e quella sottostante è che devi inserire il nome del passaggio del processo al posto del nome del pacchetto. Il mio cercherà con il nome del pacchetto. –

1

Basta, aprire il pacchetto in notepad e cambiare il livello di protezione dai 2 a 1

<DTS:Property DTS:Name="ProtectionLevel">1</DTS:Property> 
-1

Modificare il del pacchetto per encrypt con sensitiveKey e tutto funzionerà bene. :)