Inquiridor
URGENTE: xp_cmdshell com problemas para executar simples comando.

Pergunta
-
Olá Pessoal;
Estou com um problema que acredito ser simples no entanto ainda não consegui resolver. Enfim eu preciso executar um VBScript via xp_cmdshell o vb que estou tentando executar é muito simples enfim sem nenhuma instrução elaborada.
O comando que estou utilizando no xp_cmdshell é o seguinte:
exec
xp_cmdshell 'CScript.exe C:\MYFOLDER\EXT.vbs'
Também tentei usando aspas como temos abaixo:
exec
xp_cmdshell 'CScript.exe C:\MYFOLDER\EXT.vbs'
Em ambos os casos temos o seguinte output
output
--------------------------------------------------------------------------------------------------------------------------
Microsoft (R) Windows Script Host Verso 5.6
Copyright (C) 1996-2001 Microsoft Corporation. Todos os direitos reservados.
NULL
NULL(4 row(s) affected)
Aparentemente parece que não estou passando o caminho para execução do arquivo, enfim estou usando o SQL Server 2005 para executar esse comando e gostaria de ajuta para executar esse processo.
Desde já agradeço a colaboração de todos que possam contribuir.
Antonio Rodrigues.
Todas as Respostas
-
Você chegou a verificar se o script esta na maquina que é servidor do banco.
O script tem que estar na maquina onde esta o servidor. O SQL só consegue acesso aos discos de onde ele esta instalado.
Alexandre Baseio Se a minha ajuda lhe for útil não esqueça de classificar. -
Você chegou a verificar se o script esta na maquina que é servidor do banco.
O script tem que estar na maquina onde esta o servidor. O SQL só consegue acesso aos discos de onde ele esta instalado.
Alexandre Baseio Se a minha ajuda lhe for útil não esqueça de classificar.
Olá Baseio;
Estão sim o scripts esta no diretório informado o interessante é que se vc copiar o comando ('CScript.exe C:\MYFOLDER\EXT.vbs'
) e colar no prompt de comando e executar o processo ocorre sem erros agora usando o xp_cmdshellshell acontece isso.
Obrigado.
Antonio Rodrigues. -
-
Será que não é alguma falha no na codificação do seu script?
Realmente se ele não tivesse encontrado o arquivo ele daria uma mensagem avisando que não encontrou.
Eu montei um arquivo de script com o seguinte conteudo, apenas para teste:
WScript.Echo "Olá Mundo!"
executei ele com o comando :xp_cmdshell 'CScript.exe d:\teste.vbs'
e tive o seguinte retorno:
Microsoft (R) Windows Script Host Versão 5.8
Copyright (C) 1996-2001 Microsoft Corporation. Todos os direitos reservados.
NULL
Olá Mundo!
NULL
Será que não é alguma coisa relacionada a forma como você esta dando saida dos dados.
Exemplifique o seu script.
Alexandre Baseio Se a minha ajuda lhe for útil não esqueça de classificar. -
-
Será que não é alguma falha no na codificação do seu script?
Realmente se ele não tivesse encontrado o arquivo ele daria uma mensagem avisando que não encontrou.
Eu montei um arquivo de script com o seguinte conteudo, apenas para teste:
WScript.Echo "Olá Mundo!"
executei ele com o comando :xp_cmdshell 'CScript.exe d:\teste.vbs'
Microsoft (R) Windows Script Host Versão 5.8
Copyright (C) 1996-2001 Microsoft Corporation. Todos os direitos reservados.
NULL
Olá Mundo!
NULL
Será que não é alguma coisa relacionada a forma como você esta dando saida dos dados.
Exemplifique o seu script.
Alexandre Baseio Se a minha ajuda lhe for útil não esqueça de classificar.
Olá Baseio;
Segue abaixo o meu script basicamente é um comando só bastante simples:
Option Explicit
Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.Run "CMD PARA RODAR APP"Obrigado.
-
Alexandre,
Só que esta ocorrendo um problema de permissão de acesso ao arquivo através do SQL Server!!!!
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
Olá Jr;
Inicialmente eu também pensei que era problema com permissão no entanto não é pois alem de eu ser sysadm no banco eu criei um proxy dando todas as permissões necessárias.
Obrigado.
Antonio Rodrigues. -
Pelo que entendi, você está chamando o script em um shell e deste chamando outro shell.
Neste caso você as saidas do shell interno não são transmitidas para o shell interno.
O comando "WScript.Shell" abre uma nova janela e esta nova janela não transmite informações para o shell que a chamou.
Teria de ver melhor a sua necessidade em chamar este script.
Alexandre Baseio Se a minha ajuda lhe for útil não esqueça de classificar. -
Pelo que entendi, você está chamando o script em um shell e deste chamando outro shell.
Neste caso você as saidas do shell interno não são transmitidas para o shell interno.
O comando "WScript.Shell" abre uma nova janela e esta nova janela não transmite informações para o shell que a chamou.
Teria de ver melhor a sua necessidade em chamar este script.
Alexandre Baseio Se a minha ajuda lhe for útil não esqueça de classificar.
Olá Baseio;
Eu preciso chamar uma rotina no prompt de comando e executar um comando qualquer por exemplo dir /s. Você conhece alguma forma diferente ou mais funcional de fazer isso ?
Obrigado.
Antonio Rodrigues.