Oggi Elena mi ha chiesto un aiutino per identificare i
package DTS eseguiti da alcuni job in una vecchissima istanza SQL Server 7.0.
Di default quando si schedula un DTS package da
Enterprise Manager, vengono generati un job ed uno step denominati come il package; lo step esegue l'utility
DTSRun i cui parametri sono però crittati.
Sfortunatamente quei job furono preparati da alcuni consulenti anni fa e per di più gli step ed i job stessi sono stati rinominati, perdendo quindi ogni corrispondenza logica con il package.
Elena aveva la necessità di decrittare i parametri per risalire al nome dei package.
Ho notato che tramite
Profiler è possibile tracciare l'esecuzione della stored procedure di sistema
msdb.dbo.sp_get_dtspackage ma purtroppo con SQL Server 7.0 non sono riuscito a recuperare i valori dei parametri durante la chiamata (e guarda a caso il primo corrisponde proprio al nome del package!).
Facendo una ricerca su Google ho trovato una risposta di
Darren che suggeriva di scaricare l'utility
DTSRunDec.
Questo tool permette di
decrittare i parametri passati all'utility DTSRun.
Una volta scaricato lo zip ho notato che conteneva solo i sorgenti C, quindi si è posto il problema di trovare un compilatore per generare gli eseguibili.
Purtroppo sul notebook non ho installato Visual C/C++ così mi sono rivolto al mio smanettone di fiducia...
David.
Lanciando la compilazione si sono sollevati una serie di warning relativi ad alcuni cast, ma il nostro eroe è riuscito a porvi rimedio.
Al termine della compilazione abbiamo ottenuto 2 eseguibili:
DTSRunDec.exe e
DTSRunDec2.exeIl primo tool serve per decrittare i valori specificati dopo il parametro
/~Z, mentre il secondo è in grado di decrittare i valori dei singoli parametri (come ad esempio
/~N).
Il loro utilizzo è davvero banale: è sufficiente eseguirli da una shell specificando come argomento i valori crittati dei parametri per ottenere in output il contenuto in chiaro!
Tramite una query sulle tabelle di sistema
sysjobsteps e
sysjobs, abbiamo generato i comandi per decrittare i dati che ci servivano; è bastato racchiuderli in un batch per ottenere il risultato desidrato.