我目前正在尝试运行SQL Server代理作业,该作业在特定域帐户下执行CmdExec
作业步骤。我们已经设置了这项工作,以便在部署时设置以下内容:
DOMAIN\CustomUser
DOMAIN\CustomUser
Operating System (CmdExec)
代理DOMAIN\CustomUser
子系统的访问权限
sa
CmdExec
作业执行上述DOMAIN\CustomUser
代理帐户在三台计算机上的两个不同环境中,作业已被完全相同地部署(所有帐户,密码,作业名称等的相同参数)。
LocalSystem
身份运行的SQL Server 2008 R2 SP2 + SQL Server代理服务
DOMAIN\ServiceAccount
的SQL Server 2012 SP2 + SQL Server代理服务。 DOMAIN\ServiceAccount
是SQL Server中的sysadmin
,位于计算机上的Adminstrators
组中。
在环境#2 中的一台计算机上,我们收到以下错误:
以用户身份执行:DOMAIN \ CustomUser。这个过程不可能 为作业0x657C6E86850D684D9238816B8548D63B的第1步创建(原因: 客户不持有所需的特权)。步骤失败了。
在环境#2 的单独计算机上,我们收到以下错误:
无法开始执行第1步(原因:验证代理DOMAIN \ CustomUser时出错,系统错误:用户名或密码不正确。)。步骤失败了。
我已尝试按照here提示,建议您需要使用SQL Server配置管理器来设置服务帐户。虽然没有运气。
免责声明:我不配置环境#2中的计算机,所以我不知道我的前任在配置计算机时是否做了不同的事情。
为什么我会得到三个单独的结果(两次失败,一次成功)?脚本作业在我们所有的机器上都是一点一点(缺少作业ID),但完全无法在环境#2中运行。
答案 0 :(得分:1)
在作业过程中某处调用局部变量? 如果是这样,这可能是每个MS KB2968540的Windows 6.2“功能”。 Server 2008按设计工作; Server 2012前进已被打破。建议的解决方法是命中和错过。如果这是您的问题,运行ProcMon跟踪应该可以让您查看在不正确的上下文中运行的内容。
我们在我的商店必须做的是将代理作业切换到计划任务,并在批处理文件中显式声明USERPROFILE和APPDATA变量。在代理作业中设置它们会很好,但运行CMDEXEC作业的代理似乎处理的事情与CMD不同。
MS在Server 2012中打破了许多向后兼容性;祝你好运。