我在 Windows 2003 Enterprise 上的群集 SQL 2008R2 服务器上有一个 SQL 代理作业。这是一个操作系统 (CmdExec) 步骤,运行一个可执行文件。当它按计划运行时,该进程确实会启动,并且该作业显示为正在运行。但是,它从未完成过该作业。
当我以交互方式运行可执行文件时,即双击它,它会运行并按预期在 10 分钟左右完成处理。
当 exe 挂起时,我用 procmon 监视了它,它没有记录任何错误,只是停止处理(但 exe 仍在运行)
我 90% 确信这与运行 SQL 代理的用户帐户和本地安全策略有关。该帐户具有我认为它需要的所有权限 - 以服务身份登录、以批处理身份登录等。我认为在测试期间,我几乎已在策略中为其分配了所有权限。
有什么想法为什么 exe 可以交互正常运行,但 SQL 代理却会失败?
答案1
您需要验证是否可以运行该命令作为用户 SQL Server 代理运行:
RUNAS /user:SqlAgentUser <command>