3

我有 3 个存储过程——SP1, SP2 & SP3.

SP2SP3在SP1中被调用。

如果我创建一个DBRole(和一个用户 ID)并单独提供对 SP1 的 exec访问权限,然后执行SP1SP2 和 SP3会在没有权限问题的情况下执行吗?

或者我们是否还需要提供对 SP2 和 SP3 的显式执行访问?

4

2 回答 2

0

如果两个对象在数据库中具有相同的所有者,并且一个对象引用另一个对象,则形成所有权链。在这种情况下,SQL Server 将只检查引用对象的权限。它不会检查所引用对象的权限。

示例如何在链中检查权限

于 2013-05-15T08:09:15.557 回答
0

您需要全部访问它们,但您可以使用 EXECUTE AS 'some other user' 来获得对其他过程的权限:

MSDN 文档

于 2013-05-13T08:24:11.857 回答