我有 2 个数据库,我们称它们为Database1和Database2,一个权限非常有限的用户,我们称它为User1 ,以及Database1中的一个存储过程,我们称它为Proc1。
我在Proc1上授予User1EXECUTE
权限;只要所有引用的表(对于 SELECT、UPDATE ...等)都在Database1中,事情就可以正常工作,尽管User1对这些表没有明确的权限。GRANT EXECUTE ON [dbo].[Proc1] TO [User1]
我在Database2中将Proc1修改为 SELECT ,我们称之为Table1。现在,当我执行Proc1时,我收到以下错误:对象 'Table1'、数据库 'Database2'、架构 'dbo' 的 SELECT 权限被拒绝
我的理解是,当我将 EXECUTE 授予存储过程时,SQL Server 将处理所需的权限;当表(或对象)在另一个数据库中时,它的工作方式会有所不同吗?
笔记:
- User1是两个数据库中具有相同有限权限的用户
- 我正在使用 SQL Server 2005