Executando um .exe de um arquivo .asp usando o wscipt no Windows Server 2003

1

[Isso foi originalmente publicado em stackoverflow.com, mas pode ser mais adequado aqui e tenho certeza que é um problema de configuração do servidor. Desculpas se isso for considerado uma forma ruim.]

Como parte de nossos procedimentos de controle de revisão de banco de dados (e instalação automática), precisamos executar sqlcmd.exe em vários arquivos .sql de dentro de uma página ASP. O código que estou usando para fazer isso é:

Dim cmd : cmd = "sqlcmd -S " & DATABASE_SERVER & " -U " & DATABASE_UID & " -P " & DATABASE_PWD & " -d " & DATABASE_NAME & " -i """ & scriptPath & """ -b"
Dim wshShell : Set wshShell = Server.CreateObject("WScript.Shell")
Dim return : return = wshShell.Run(cmd, 0, True)

Eu tenho o código funcionando bem em duas máquinas de desenvolvimento separadas. Ambos executam o XP e não precisam de etapas adicionais para que o código funcione. Tendo implantado o código em um servidor Windows 2003, está tendo problemas. O problema é que o valor para o retorno é sempre 1. Isso também acontece se eu tentar fazer com que ele execute um arquivo em lotes ou qualquer outra coisa em que eu possa pensar (se eu alterar o valor de cmd para um arquivo não existente que ele explode) como eu esperaria)

Eu tentei adicionar I_USR e I_WAM para ter permissões de execução em sqlcmd.exe e cmd.exe, mas ainda retorna 1. Se eu abrir um prompt de comando no servidor e fazer um "runas / user: servername \ i_usr sqlcmd.exe "que funciona bem, mas a execução a partir da página ASP ainda não funciona.

Além disso, ao executar manualmente os scripts .sql, tudo corre bem, por isso não há problemas com eles.

Há alguma configuração de segurança no servidor que eu tenha esquecido de alterar no IIS ou no Windows em geral para que ela funcione?

Eu também tentei isso em outra máquina do Server 2003 e estou recebendo exatamente o mesmo problema.

Halp.

    
por jammus 30.04.2009 / 09:59

1 resposta

1

Acabei de descobrir qual era o problema (bem, meu provedor de hospedagem fez). Código alterado, adicionando '% COMSPEC% / C' (onde% COMSPEC% contém o caminho para o cmd.exe) na frente do comando.

Dim cmd : cmd = "%COMSPEC% /C sqlcmd -S " & DATABASE_SERVER & " -U " & DATABASE_UID & " -P " & DATABASE_PWD & " -d " & DATABASE_NAME & " -i """ & scriptPath & """ -b"

Agora funciona apenas como dandy. Eu não tenho certeza sobre o porquê / como, então deixarei a pergunta sem resposta por enquanto para alguém responder de forma mais abrangente, se puderem.

    
por 30.04.2009 / 13:16