[这是最初张贴在stackoverflow.com,但可能更适合在这里,我敢肯定这是一个服务器configuration问题。 道歉,如果这被认为是不好的forms。]
作为我们的数据库修订控制(和自动安装)过程的一部分,我们需要能够从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.这也会发生,如果我试图让它来运行一个batch file或其他我能想到的(如果我将cmd的值更改为一个不存在的文件它popup如我所料)
我已经尝试添加I_USR和I_WAM在sqlcmd.exe和cmd.exe上都具有执行权限,但是它仍然返回1.如果我在服务器上打开命令提示符并执行“runas / user:servername \ i_usr sqlcmd.exe “工作正常,但从ASP页面运行仍然无法正常工作。
而且,当手动运行.sql脚本时,所有运行都很顺利,所以没有任何问题。
服务器上是否有任何安全设置,我忘了在IIS或Windows中更改以使其正常工作?
我也尝试过在另一个Server 2003机器上,并得到完全相同的问题。
HALP。
刚刚发现问题是什么(好吧,我的托pipe服务提供者)。 通过将“%COMSPEC%/ C”(其中%COMSPEC%保存cmd.exe的path)添加到命令的前面来更改代码。
Dim cmd : cmd = "%COMSPEC% /C sqlcmd -S " & DATABASE_SERVER & " -U " & DATABASE_UID & " -P " & DATABASE_PWD & " -d " & DATABASE_NAME & " -i """ & scriptPath & """ -b"
现在它工作只是丹迪。 我不确定这个问题,所以我现在不能回答这个问题,如果有人可以更全面地回答。