Как я могу запустить sqlcmd.exe со страницы ASP? - PullRequest
4 голосов
/ 25 февраля 2009

В рамках процедур контроля версий (и автоматической установки) нашей базы данных мы должны иметь возможность запускать 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 2003, у него возникли проблемы. Проблема в том, что возвращаемое значение всегда равно 1. Это также происходит, если я пытаюсь заставить его запустить пакетный файл или что-нибудь еще, о чем я могу подумать (если я изменяю значение для cmd на несуществующий файл, он взрывается как я и ожидал)

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

Кроме того, при запуске сценариев .sql вручную все работает гладко, поэтому с ними проблем нет.

Есть ли какие-либо параметры безопасности на сервере, которые я забыл изменить в IIS или Windows, чтобы они работали?

Заранее спасибо интернету.

Ответы [ 2 ]

2 голосов
/ 26 октября 2009

Проблема была решена путем изменения первой строки на:

Dim cmd : cmd = "%COMSPEC% /C sqlcmd -S " & DATABASE_SERVER & " -U " & DATABASE_UID & " -P " & DATABASE_PWD & " -d " & DATABASE_NAME & " -i """ & scriptPath & """ -b"
1 голос
/ 31 марта 2009

Вы должны изменить

cmd = "sqlcmd -S ...

до

cmd = "\windows\sqlcmd.exe -S ..

(или любой другой путь к sqlcmd.exe без пробелов)

Просто чтобы исключить проблемы с путями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...