从这个link开始,我注意到授予应用程序用户“执行”权限已经足够了。对存储过程的许可。
但是当过程从不同的数据库访问对象时,它将不起作用。
我们可以考虑两种可能的解决方案,包括为每个数据库创建一个SQL登录并分配最小权限集,以及
还有其他更好的方法吗?
答案 0 :(得分:2)
您正陷入'执行为用户'的约束执行模型中。这种沙子拳击是设计的,有两种可能的解决方案:
了解更多:
答案 1 :(得分:0)
只有在查询需要访问另一台服务器时才需要链接服务器,但是您不需要链接服务器来访问单独的数据库。
您可以像这样授予执行权限:
USE [Database1]
GRANT CONNECT TO [username];
GRANT EXEC ON [schema].[sp_name] TO [username];
USE [Database2]
GRANT CONNECT TO [username];
GRANT EXEC ON [schema].[sp_name] TO [username];