quarta-feira, 11 de maio de 2011

Como descriptografar o nome do pacote executado com DTSRun no SQL Server 2000

Obter o nome do pacote (DTS package do SQL Server) executado com DTSRun dentro de um job pode ser trabalhoso, pois ele fica critografado. O método a seguir descriptografa o nome do pacote. Foi testado no SQL Server 2000. Os passos tem que ser executados exatamente como descrito abaixo, senão pode não funcionar. Um espaço a mais ou a menos, ou uma cópia intermediária, pode invalidar o procedimento.


1) Abra uma janela do prompt de comando do Windows, copie e cole o comando do DTS. Para colar, clicar no ícone da janela do CMD, abrindo o menu, escolher "Editar" e depois "Colar". Exemplo:



C:\> DTSRun /~Z0x849CE5D77E921A44E6F6A5387C09371196F96F04AB99C12E334D64C4F5D5B6FAB21E24B9E6F1D620EE4DB419C95C7838DBB8BD6C8F113C70857AEA9XXXXXXXXXX66DA44892576FD6384C5D03508C3EEE66D0D6EFF8D16F321C55C3C77C9536CCF4722B23DFDC451E2FFCBD367ADAAE3CB




(Obs: se tentar com a string acima não funcionará, pois o teste foi com dados de um ambiente real, então alterei a string critografada para preservar as informações, os nomes do server e do pacote. N

ote os XXXXXXXXX no meio da string ... Isso invalida o código acima, que é mostrado apenas para ilustrar. Mas basta testar com o seu próprio comando.)




2) Adicione manualmente ao final do comando, com os espaços:




 /!X /!C



Aqui descobri por exemplo que se copiar e colar estes caracteres no final, tal como feito no passo 1, não funciona. Aparentemente não pode mexer na área de transferência.




No exemplo anterior, seria algo parecido com:




DTSRun /~Z0x849CE5D77E921A44E6F6A5387C09371196F96F04AB99C12E334D64C4F5D5B6FAB21E24B9E6F1D620EE4DB419C95C7838DBB8BD6C8F113C70857AEA9D2CD9XXXXXXXXXX66DA44892576FD6384C5D03508C3EEE66D0D6EFF8D16F321C55C3C77C9536CCF4722B23DFDC451E2FFCBD367ADAAE3CB /!X /!C



3) Execute comando do Windows o comando. Irá retornar:



DTSRun: Loading...
DTSRun: Executing...




4) Abra um novo arquivo no Notepad e cole o que estiver na área de transferência, que será o comando com o nome do pacote descriptografado. No exemplo anterior:



DTSRun /S "nome do server" /N "nome do pacote" /E /!X /!C




O que permite ter acesso ao nome do pacote que é executado pelo comando.



Parece até mágica... :-) ... o fato é que funciona. O /!C copia a linha de comando para a área de transferência, mas deve ser usado em conjunto com o /!X, que recupera o nome do pacote. O que faz  parecer um truque é justamente o uso incomum do clipboard. É um dos procedimentos mais esotéricos que encontrei ao trabalhar com SQL Server 2000.


Nenhum comentário :

Postar um comentário