2009-02-25 4 views
4

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

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

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

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

cmd = "sqlcmd -S ... 

в

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

(Или как полный путь к Sqlcmd.exe без пробелов)

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

 Смежные вопросы

  • Нет связанных вопросов^_^