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

Sql server SQL Server代理作业无法在代理帐户下运行CmdExec步骤,sql-server,proxy,sql-server-2008-r2,sql-server-2012,sql-server-agent,Sql Server,Proxy,Sql Server 2008 R2,Sql Server 2012,Sql Server Agent,我当前正在尝试运行SQL Server代理作业,该作业在特定域帐户下执行CmdExec作业步骤。我们对作业进行了设置,以便在部署时设置以下内容: 使用正确的密码创建凭证DOMAIN\CustomUser 创建SQL Server代理代理DOMAIN\CustomUser 授予对域\CustomUser代理的操作系统(CmdExec)子系统的访问权限 创建由sa拥有的SQL Server代理作业 CmdExec上述作业中的作业步骤,该作业在DOMAIN\CustomUser代理帐户下运行 作业已在

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

  • 使用正确的密码创建凭证
    DOMAIN\CustomUser
  • 创建SQL Server代理代理
    DOMAIN\CustomUser
  • 授予对
    域\CustomUser
    代理的
    操作系统(CmdExec)
    子系统的访问权限
  • 创建由
    sa拥有的SQL Server代理作业
  • CmdExec
    上述作业中的作业步骤,该作业在
    DOMAIN\CustomUser
    代理帐户下运行
  • 作业已在两个不同的环境中进行了相同的部署(所有帐户、密码、作业名称等的参数相同),在三台计算机上的结果不同

  • SQL Server 2008 R2 SP2+SQL Server代理服务作为本地系统运行
    • 作业在此环境下对所有计算机都能正确运行
  • SQL Server 2012 SP2+SQL Server代理服务作为
    DOMAIN\serviceCount
    运行。
    DOMAIN\servicecomport
    是SQL Server中的一个
    sysadmin
    ,位于计算机上的
    administrators
    组中。
    • 作业在此环境中的两台计算机上出现两条不同的错误消息失败
  • 环境#2中的一台机器上,我们收到以下错误:

    以用户身份执行:域\自定义用户。这一进程无法实现 为作业0x657C6E86850D684D9238816B8548D63B的步骤1创建(原因: 客户端不拥有所需的权限)。步骤失败了

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

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

    我已尝试按照指导意见进行操作,该指导意见建议您需要使用SQL Server Configuration Manager来设置服务帐户。不过运气不好

    免责声明:我没有在Environment#2中配置机器,因此我不知道我的前任在配置机器时是否做了一些不同的事情


    为什么我会得到三个不同的结果(两次失败,一次成功)?脚本化作业在我们所有的机器上都是逐位(简称作业ID)相同的,但它完全无法在环境2中运行。

    作业过程中的某个地方调用了局部变量吗? 如果是这样,这可能是MS KB2968540的Windows 6.2“功能”。Server2008按设计工作;服务器2012转发已损坏。建议的解决方法是偶然的。如果这是您的问题,那么运行ProcMon跟踪应该允许您查看在不正确的上下文下运行的内容

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


    MS在服务器2012中打破了很多向后兼容性;祝您好运。

    任务计划程序可用于计划和执行作业(运行SSIS包)。将文件保存在桌面上的.bat中,并使用任务计划程序计划自动运行作业:

  • 创建SSIS包
  • 将包保存在映射的服务器(或驱动器)上
  • 复制路径
    “D:\ARMSTEE\ssipackage\gianticweeklyupload_1.dtsx”
  • 将路径添加到
    dtexec/f“D:\ARMSTEE\ssipackage\gianticweeklyupload_1.dtsx”

  • 这样做更快更容易。我花了一段时间才找到它,所以才找到了wonna share。当您有权限问题时可以使用此选项,尤其是

    我在这里列出了SSSCE要点:。这适用于我在环境1和我的开发机器上(我使用代理服务的
    LocalSystem
    ),但不适用于其他两个环境。不,我们没有使用任何使用环境变量的东西。正如在最初的SSSCE中所看到的,该示例甚至使用了非常简单的配置。从那以后,我们不知何故修复了它,但是修复的细节已经丢失。我不建议在桌面上使用.bat文件,任何人都可以意外地删除它,从而破坏计划。这并不能解决问题。事实上,这几乎是完全无关的,因为问题在于CmdExec作业步骤。然而,使用任务调度器是一种合理的解决方法。就@davejal而言,当使用不同的帐户运行任务时,确保设置文件权限以防止意外事故和恶意篡改总是很重要的。