Sql server 在SQL Server代理中运行作业时出现拒绝访问错误

Sql server 在SQL Server代理中运行作业时出现拒绝访问错误,sql-server,sql-server-agent,Sql Server,Sql Server Agent,我试图让SQL Server代理运行带有参数的程序(作为操作系统CmdExec作业步骤),但每次运行作业时,我都会收到以下错误:无法为作业的步骤1创建进程,原因:访问被拒绝) 我在网上做的研究表明,这可能是一个权限问题。我在Windows中设置了一个新的用户帐户,并授予它对我想要运行的程序的完全权限,然后将此用户配置文件映射到MS SQL中的SQLSERVERAGENT配置文件,但仍然出现此错误 如果有任何帮助,我们将不胜感激。首先,您需要确保XP\u CMDSHELL是允许的 exec sp_

我试图让SQL Server代理运行带有参数的程序(作为操作系统CmdExec作业步骤),但每次运行作业时,我都会收到以下错误:无法为作业的步骤1创建进程,原因:访问被拒绝)

我在网上做的研究表明,这可能是一个权限问题。我在Windows中设置了一个新的用户帐户,并授予它对我想要运行的程序的完全权限,然后将此用户配置文件映射到MS SQL中的SQLSERVERAGENT配置文件,但仍然出现此错误


如果有任何帮助,我们将不胜感激。

首先,您需要确保XP\u CMDSHELL是允许的

exec sp_configure 'xp_cmdshell',1
go
reconfigure
  • 您需要使用您创建的用户创建凭据
  • 创建引用您创建的凭据的代理。授予此代理对“操作系统(CmdExec)”子系统的访问权限
  • 在作业步骤本身中,确保它作为此代理执行(运行方式:)

  • 我也遇到了同样的问题,解决方法非常简单:我的.exe路径被关闭了。这反映为“拒绝访问”错误(因为代理帐户并不真正知道该文件不存在,只是它无法访问这样的文件),这有点令人困惑


    排除故障时可以采取的一个简单步骤是在命令窗口中运行确切的命令。它是否按预期工作?如果您使用代理帐户登录,效果如何?

    以上步骤对我很有效

    Enable XP_cmdshell
    EXEC sp_configure 'show advanced options', 1
    GO
    RECONFIGURE
    GO
    EXEC sp_configure 'xp_cmdshell', 1
    GO
    RECONFIGURE
    GO
    
    创建凭证

    CREATE CREDENTIAL cmdshell_agent WITH IDENTITY = 'account_name', SECRET = 'password';
    GO
    
    创建代理

    USE [msdb]
    GO
    EXEC msdb.dbo.sp_add_proxy @proxy_name=N'tst_Proxy',@credential_name=N'cmdshell_agent', @enabled=1
    GO
    EXEC msdb.dbo.sp_grant_proxy_to_subsystem @proxy_name=N'tst_Proxy', @subsystem_id=3
    GO
    

    在此之后,在sql代理作业中使用tst_代理来运行作业。作业成功运行

    收到相同的错误消息。结果表明,SQL代理帐户对sqlcmd.exe所在的工具目录没有权限。已向SQL代理帐户授予读取和执行权限,问题已解决。

    我们需要确保执行作业的帐户对作业步骤中涉及的文件夹/文档具有完全访问权限


    这应该可以在不添加代理的情况下解决问题。

    您如何“运行”该程序?xp\u cmdshell?作业步骤(操作系统CmdExec、PowerShell等)?其他方法?是的,我正在以操作系统cmdexece的身份运行它。重新配置登录帐户后是否重新启动了SQL Agent?是的,仍然存在错误。作业的所有者是谁?萨?