我设置了一个存储过程DATABASE1
,其中包括对存储过程调用的调用sp_start_job
(这是 msdb 数据库中的一个存储过程,它将触发代理作业)。
我创建了一个代理登录并将此登录映射到msdb和DATABASE1数据库中的用户帐户。
在我原来的存储过程中,我使用 EXEC 作为代理登录。此代理用户有权执行此过程,并且可以在 msdb 数据库中执行 sp_start_job 过程,并且是 SqlAgentOperator、SqlAgentUser 和 SqlAgentReader 角色的成员。我还授予了DATABASE1和msdb中的用户身份验证权限。
这个想法是任何可以执行原始过程的用户实际上都会在代理登录的凭据下运行它,所以我不必分配这些权限。我仍然遇到权限错误,有人知道这个问题吗?