2009-02-25 7 views
4

데이터베이스 개정 관리 (및 자동 설치) 절차의 일부로 ASP 페이지에서 다양한 .sql 파일에 대해 sqlcmd.exe를 실행할 수 있어야합니다. 내가이 일을 사용하고 코드는 다음과 같습니다ASP 페이지에서 sqlcmd.exe를 어떻게 실행합니까?

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 실행) 내 개발 시스템에서 작업하지만 지금은 우리의 윈도우 2003 서버는 문제가있어에 배치했다고합니다. 문제는 반환 값이 항상 1입니다. 배치 파일이나 내가 생각할 수있는 다른 파일을 실행하려고하면이 문제가 발생합니다 (cmd의 값을 존재하지 않는 파일로 변경하면 파일이 폭탄이됩니다). 예상대로)

sqlcmd.exe와 cmd.exe 모두에 대해 I_USR 및 I_WAM을 실행하여 실행 권한을 추가했지만 여전히 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를 할 수있는 전체 경로를 공백없이 무엇이든) 변경해야

그냥 경로 문제를 배제 할 수 있습니다.

관련 문제