Вопросы
Войти

Работает .ехе из .файл ASP с помощью wscipt под Windows Server 2003 с

jammus

[Это было первоначально опубликовано на stackoverflow.com но может быть более подходящий здесь, и я уверен, что это проблема конфигурации сервера. Извинения, если это считается плохим тоном.]

В рамках нашего контроля версий базы данных (и авто-установки) процедуры, мы должны быть в состоянии работать sqlcmd.exe на различных .SQL файлы из ASP-страницы. Код я использую, чтобы сделать это:

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)

У меня код работает нормально на двух разных машинах развития. Они оба работают под управлением XP и не требуется дополнительно шаги, чтобы получить работающий код. Разместив код в Windows Server 2003 с ней возникают проблемы. Проблема в том, что стоимость за возврат всегда равен 1. Это также происходит, если я пытаюсь получить его, чтобы запустить пакетный файл или что-нибудь еще я могу думать (если я измените значение для cmd на несуществующий файл это бомбы, как я ожидал)

Я пробовал добавлять I_USR и I_WAM иметь разрешения на выполнение обеих sqlcmd.exe и cmd.exe но он по-прежнему возвращает 1. Если я откройте командную строку на сервере и сделать "рунас /пользователей:имя_сервера\sqlcmd.exe i_usr", который работает нормально, но работает с ASP-страницы по-прежнему не работает.

Также, при запуске .SQL-скрипты вручную все проходит гладко, поэтому не возникает проблем с ними.

Существуют ли какие-либо настройки безопасности на сервере, что я забыл изменить в IIS или Windows вообще заставить его работать?

Я также попробовал это на другой машине сервер 2003 и я получаю точно такой же проблемой.

Помощью.

windows
windows-server-2003
1 Ответов
jammus

Только что узнал, что проблема была (ну, мой хостинг-провайдер сделал). Изменил код, добавив '%COMSPEC% /C В' (где %COMSPEC% держит путь к cmd.exe) в передней части команды.

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

Он теперь работает просто превосходно. Я не уверен, почему/как так я оставлю этот вопрос без ответа сейчас для кого-то, чтобы ответить более полно, если они могут.