SQL Server代理作业无法在代理帐户下运行CmdExec步骤

时间:2014-08-19 14:34:37

标签: sql-server proxy sql-server-2008-r2 sql-server-2012 sql-server-agent

我目前正在尝试运行SQL Server代理作业,该作业在特定域帐户下执行CmdExec作业步骤。我们已经设置了这项工作,以便在部署时设置以下内容:

  1. 使用正确的密码创建凭据DOMAIN\CustomUser
  2. 创建SQL Server代理代理DOMAIN\CustomUser
  3. 授予对Operating System (CmdExec)代理
  4. DOMAIN\CustomUser子系统的访问权限
  5. 创建sa
  6. 所拥有的SQL Server代理作业
  7. CmdExec作业执行上述DOMAIN\CustomUser代理帐户
  8. 下的作业

    在三台计算机上的两个不同环境中,作业已被完全相同地部署(所有帐户,密码,作业名称等的相同参数)。

    1. LocalSystem身份运行的SQL Server 2008 R2 SP2 + SQL Server代理服务
      • 作业在此环境下针对所有计算机正常运行
    2. 运行为DOMAIN\ServiceAccount的SQL Server 2012 SP2 + SQL Server代理服务。 DOMAIN\ServiceAccount是SQL Server中的sysadmin,位于计算机上的Adminstrators组中。
      • 作业在此环境中的两台计算机上失败了两个两个不同的错误消息
    3. 环境#2 中的一台计算机上,我们收到以下错误:

        

      以用户身份执行:DOMAIN \ CustomUser。这个过程不可能   为作业0x657C6E86850D684D9238816B8548D63B的第1步创建(原因:   客户不持有所需的特权)。步骤失败了。

      环境#2 的单独计算机上,我们收到以下错误:

        

      无法开始执行第1步(原因:验证代理DOMAIN \ CustomUser时出错,系统错误:用户名或密码不正确。)。步骤失败了。

      我已尝试按照here提示,建议您需要使用SQL Server配置管理器来设置服务帐户。虽然没有运气。

      免责声明:配置环境#2中的计算机,所以我不知道我的前任在配置计算机时是否做了不同的事情。

      为什么我会得到三个单独的结果(两次失败,一次成功)?脚本作业在我们所有的机器上都是一点一点(缺少作业ID),但完全无法在环境#2中运行。

1 个答案:

答案 0 :(得分:1)

在作业过程中某处调用局部变量? 如果是这样,这可能是每个MS KB2968540的Windows 6.2“功能”。 Server 2008按设计工作; Server 2012前进已被打破。建议的解决方法是命中和错过。如果这是您的问题,运行ProcMon跟踪应该可以让您查看在不正确的上下文中运行的内容。

我们在我的商店必须做的是将代理作业切换到计划任务,并在批处理文件中显式声明USERPROFILE和APPDATA变量。在代理作业中设置它们会很好,但运行CMDEXEC作业的代理似乎处理的事情与CMD不同。

MS在Server 2012中打破了许多向后兼容性;祝你好运。