我对所有权链接进行了大量研究,但我仍然不确定我是否理解它。
那么:说/ table / view / proc的“所有者”总是一个SCHEMA是否正确?
如果A.PROC访问B.TABLE,但用户只能在A.PROC上执行,那么该过程将失败。但是如果A.PROC访问A.TABLE,它会被执行吗?这是对的吗?
答案 0 :(得分:1)
没有。见Ownership and User-Schema separation:
默认情况下,当开发人员在架构中创建对象时,对象由拥有架构的安全主体拥有,而不是开发人员。
...
架构还可以包含由不同用户拥有的对象,并且具有比分配给架构的权限更细化的权限
ALTER AUTHORIZATION
:
从SQL Server 2005开始,用户可以拥有另一个数据库用户拥有的架构所包含的OBJECT或TYPE。这是对早期版本的SQL Server的行为更改。
因此,如果A.PROC
和B.TABLE
都归D
所有,则所有权链接意味着不会对B.TABLE
进行安全检查。相反,如果A.PROC
拥有D
且A.TABLE
拥有E
,则所有权链接不适用,并且会进行权限检查。