none
URGENTE: xp_cmdshell com problemas para executar simples comando. RRS feed

  • 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.






    terça-feira, 16 de março de 2010 14:29

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.
    terça-feira, 16 de março de 2010 15:32
  • 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. 
    terça-feira, 16 de março de 2010 16:17
  • Antonio,

    Este desconfiado com o xp_cmdShell não consegui interpretar e executar este aplicativo CScript.exe.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    terça-feira, 16 de março de 2010 17:40
  • 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.
    terça-feira, 16 de março de 2010 17:45
  • 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
    terça-feira, 16 de março de 2010 17:49
  • 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.


    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.

    terça-feira, 16 de março de 2010 19:07
  • 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.
    terça-feira, 16 de março de 2010 19:10
  • 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.
    quarta-feira, 17 de março de 2010 13:15
  • 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.
    quarta-feira, 17 de março de 2010 15:00