Sql Server Agent作业无法执行存储过程

时间:2015-06-25 15:18:19

标签: sql-server stored-procedures sql-server-2012 sql-server-agent

我有一个存储过程,我可以在SSMS中使用非域SQL Server用户执行。

此存储过程从一个数据库(DB1)中的表中选择数据,从而截断并选择DB2中的表。

用户拥有两个数据库的datareader,datawriter和dbowner。

问题:

当我通过SS代理执行存储过程并以用户身份执行时,我收到以下错误

  

服务器主体[user]无法访问数据库[DB1]   在当前的安全背景下。

目前采取的行动:

到目前为止,我试图解决这个问题:

  1. 启用两个数据库的数据库链接
  2. 从DB1删除用户并再次添加
  3. 使用EXEC sp_change_users_login @Action=’Report’检查以查看用户是否是孤儿。因为这是一个恢复现场数据库的数据库。但是我在恢复后添加了用户。 该用户未被列为孤儿

1 个答案:

答案 0 :(得分:1)

如果您不希望拥有者为sa,则可能的解决方法是让用户成为msdb的成员并在msdb中授予SQLAgentOperatorRole。看看是否有效。

但说实话,要么使用sa,要么使用具有足够权限的专用服务帐户。如果工作在这种情况下运行会更好。