T-SQL Server代理作业失败“用户无权执行此操作”

时间:2014-01-14 17:16:59

标签: sql-server

我在SQL Server代理中设置了一个T-SQL作业,每周运行一次。在SQL Server Management Studio中,我能够成功地将脚本作为查询运行,但是当作业运行时,它会出错:

  

“以用户身份执行:DOMAIN \ user。用户没有权限   执行此操作。 [SQLSTATE 42000](错误15247)。这一步   失败“。

脚本从一个SQL服务器导出表数据并将其转储到另一个链接服务器。根据我收集的内容,T-SQL不使用代理和凭据,它在执行脚本时使用所有者登录我在两个数据库上都是db_owner,在两个服务器上都是sysadmin和serveradmin,我缺少什么?

3 个答案:

答案 0 :(得分:3)

有关SQL Server代理用户上下文的服务器端(而非数据库安全性)的安全要求,请参阅this page。 SQL代理是一个外部进程,分配了一个Windows帐户以在其下运行,该帐户必须位于数据库实例上的sysadmin组中。

答案 1 :(得分:1)

感谢大家的帮助,您的建议引导我找到解决方案。为了让它工作,我的域名登录是作业的所有者。在高级下的步骤属性中,我将“作为用户运行”留空,然后将“EXEC AS LOGIN ='DOMAIN \ user'”添加到T-SQL脚本中并且它有效!

答案 2 :(得分:1)

这是一个古老的问题,但我找到了一个答案,所以只是为了帮助加强它,以防其他任何人遇到这个问题......

Chad的解决方案是唯一对我有用的解决方案。将作业步骤属性高级选项卡中的“以用户身份运行”框保留为空白,并将“EXEC AS LOGIN ='DOMAIN \ user'”添加到T-SQL脚本中。我还必须确保将“DOMAIN \ user”帐户添加到SQL Server实例中作为具有有效/必要角色的登录。