我在DATABASE1中设置了一个存储过程,除其他外,它调用存储过程调用sp_start_job (这是msdb数据库中的一个存储过程,它将触发代理作业)。
我已经创建了一个代理登录,并将此登录映射到、msdb、和DATABASE1数据库中的用户帐户。
在我最初的存储过程中,我使用EXEC作为proxylogin。此代理用户有权执行此过程,并且在msdb数据库中可以执行sp_start_job过程,并且是SqlAgentOperator、SqlAgentUser和SqlAgentReader角色的成员。我还在DATABASE1和msdb中给了用户一式一份的权限。
这样做的想法是,任何能够执行原始过程的用户实际上都将在proxylogin的凭据下运行它,因此我不必将这些权限分配出去。我仍然遇到权限错误,有人对这个问题有洞察力吗?
发布于 2012-05-15 22:13:41
我们通过打开跨数据库所有权链接来解决这个问题。
https://stackoverflow.com/questions/10567882
复制相似问题