作为我们的数据库修订控制(和自动安装)过程的一部分,我们需要能够在 ASP 页面中对各种 .sql 文件运行 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)上工作,但现在我已经将它部署到我们的 Windows 2003 服务器,它遇到了问题。问题是 return 的值始终为 1。如果我尝试让它运行批处理文件或我能想到的任何其他东西,也会发生这种情况(如果我将 cmd 的值更改为不存在的文件,它就会爆炸正如我所料)
我尝试添加 I_USR 和 I_WAM 以对 sqlcmd.exe 和 cmd.exe 都具有执行权限,但它仍然返回 1。如果我在服务器上打开命令提示符并执行“runas /user:servername\i_usr sqlcmd.exe " 工作正常,但从 ASP 页面运行仍然无法正常工作。
此外,当手动运行 .sql 脚本时,一切都运行顺利,因此它们没有问题。
服务器上是否有任何我忘记在 IIS 或 Windows 中更改以使其正常工作的安全设置?
提前感谢互联网。