作者:气质未央若 | 来源:互联网 | 2024-09-28 21:34
使用CREATEPROCEDURE的必要特权必须拥有数据库上的Resource特权来在该数据库中创建用户定义的过程。在能创建SPL过程之前,您还必须拥有要编写的过程中的SPL、C或
使用 CREATE PROCEDURE 的必要特权
必须拥有数据库上的 Resource 特权来在该数据库中创建用户定义的过程。
在能创建 SPL 过程之前,您还必须拥有要编写的过程中的 SPL 、C 或 Java™语言的 Usage 特
权。有关更多信息,请参阅语言级权限。
缺省情况下,SPL 上的 Usage 特权授权为 PUBLIC 。您还必须至少拥有数据库上的 Resource 特
权来在该数据库中创建 SPL 过程。
DBA 关键字和过程上的特权
如果创建带有 DBA 关键字的 UDR ,则其称为 DBA 特权 UDR 。您需要 DBA 特权来创建或者执行 DBA 特权的 UDR 。
在不具有 DBA 特权的用户中,只有 DBA 授予 Execute 权限的用户才能调用 DBA 特权
UDR。
然而,如果 DBA 将 Execute 特权授予 PUBLIC ,则所有的用户都可以使用 DBA 特权
UDR 。有关 DBA 特权 UDR 的其它信息,请参阅创建数据库对象的所有权 。
如果您省略 DBA 关键字,则此 UDR 称为所有者特权 UDR 。
当您在兼容 ANSI 的数据库中创建了所有者特权 UDR 时,只有您自己能执行此 UDR。
在其它用户可以执行所有者特权 UDR 之前,它的所有者必须将 Execute 特权授权给个别用户或角色或者
PUBLIC 。
如果您在不兼容 ANSI 的数据库中创建了所有者特权 UDR ,则任何人都可以执行此 UDR ,因
为缺省情况下 PUBLIC 被授予 Execute 特权。
要限制指定用户对所有者特权 UDR 的存取,则所有者必须从 PUBLIC 撤销其在 UDR 上的 Execute 特权,然后将它授权给指定的用户或角色。
将
NODEFDAC 环境变量设置成 yes 可以阻止该 UDR 上的权限被缺省授予给 PUBLIC 。
如果该环境变量设置成 yes ,则除了此 UDR 的所有者,其它任何人都不能调用此 UDR ,除非所有者将此 UDR 的 Execute 特权授权给其他用户。