跨数据库权限 SQL Server

跨数据库权限 SQL Server

在 MS SQL 2005 实例中有两个数据库。
特定用户对这两个数据库的 dbo 架构都有执行权限。

在数据库 AI 中有一个存储过程,其中包含对数据库 B 中表的选择语句。dbo
模式执行权限是否足以进行此调用,或者用户是否必须对数据库 B 中的表具有选择访问权限?

我们对所有数据库访问都使用存储过程,并且希望用户只具有执行权限。

答案1

如果跨数据库所有权链接已启用A 中存储过程的所有者也是 B 中表的所有者(相同的 SID,而不仅仅是相同的名称),那么 EXECUTE 权限就足够了。

如果其中任何一个不成立,则当前正在执行登录还必须在 B 中有一个对该表具有 SELECT 权限的用户。另一种方法是使用代码签名它可以提供更精细的控制,允许用户从表中进行选择仅有的在执行该过程时。

答案2

不,您还必须授予架构或相关特定对象的 SELECT 权限。授予架构的 EXECUTE 权限仅允许用户执行该操作。您还必须具有在存储过程中执行底层任务的权限。

相关内容