教你轻松掌握怎样更改嵌套对象的所有权

来源:岁月联盟 编辑:zhuzhu 时间:2007-10-11

视图和过程可访问由不同用户拥有的基础对象。例如,如果 usera、userb、 userc 和 userd 是四个不同的用户,而 userd.viewd 可能基于userc.viewc, userc.viewc 可能基于 userb.viewb, userb.viewb 可能基于usera.table。对于过程,也与此相似:userd.procd 可能会调用userb.procb.procc, userc.procc 可能会调用 userb.procb, userb.procb 可能会插入 usera.tablea。

下列 " 任意访问控制 "(DAC) 规则适用于嵌套视图和表:

·要创建视图,用户必须对视图中的所有基本对象 (例如,表和视图)具有 SELECT 权限。

·要访问视图,必须用 GRANT OPTION (授权选项)向视图所有者授予对基表或视图的适当权限,还必须向视图的用户授予对视图的适当权限。

·用 WHERE 子句更新需要同时具有 SELECT 和 UPDATE 权限。

·如果用户拥有视图定义中的表,则用户可以通过某个视图来访问这些表,即使用户不是该视图的所有者并且尚未被授予对该视图的访问权限,也可以这样做。

下列 DAC 规则适用于嵌套过程:

·用户无需对基础对象 (例如,表、视图或过程)具有任何权限即可创建过程。

·要执行一个过程,过程的所有者需要对该过程所引用的对象具有适当的权限。

·即使某个用户拥有某个过程引用的所有表,除非该用户已被授予对该过程的 EXECUTE 权限,否则该用户将无法执行该过程以访问这些表。(责任编辑:卢兆林)