作为数据库修订控制(和自动安装)过程的一部分,我们需要能够在 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 服务器上,但它遇到了问题。问题在于返回值始终为 1。如果我尝试让它运行批处理文件或我能想到的其他任何文件,也会发生这种情况(如果我将 cmd 的值更改为不存在的文件,它会崩溃)正如我所期望的那样)
我尝试添加 I_USR 和 I_WAM 以对 sqlcmd.exe 和 cmd.exe 具有执行权限,但它仍然返回 1。如果我在服务器上打开命令提示符并执行“runas /user:servername\i_usr sqlcmd.exe " 工作正常,但从 ASP 页面运行仍然无法工作。
此外,当手动运行 .sql 脚本时,一切都会顺利运行,因此不会出现任何问题。
服务器上是否有任何我忘记在 IIS 或 Windows 中更改的安全设置以使其正常工作?
提前感谢互联网。
通过将第一行更改为:
Dim cmd : cmd = "%COMSPEC% /C sqlcmd -S " & DATABASE_SERVER & " -U " & DATABASE_UID & " -P " & DATABASE_PWD & " -d " & DATABASE_NAME & " -i """ & scriptPath & """ -b"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)