GBASE南大通用数据库执行例程的DBA权限

发布网友 发布时间:34分钟前

我来回答

1个回答

热心网友 时间:34分钟前

当DBA使用DBA关键字创建例程,数据库服务器将Execute权限自动授予具有DBA权限的其他用户。DBA也能显式地向无DBA权限用户授予DBA例程上的Execute权限。用户在执行以DBA关键字注册的例程时,被认为在执行期间持有DBA权限。若无DBA权限的用户运行DBA例程,服务器会临时授予DBA权限。在退出例程后,服务器撤销该权限。

执行DBA例程的用户在运行期间拥有创建的对象,除非例程中明确指定了其他用户作为所有者。例如,如果Tony使用DBA关键字注册了名为promo()的例程,其他用户在执行此例程时可能获得不同对象的所有权。

被调用的例程不继承DBA权限。如果DBA例程执行未以DBA关键字创建的例程,则DBA权限不影响被调用例程。若非DBA例程调用DBA例程,调用者必须有Execute权限,DBA例程内部的语句执行如同其他DBA例程。

以下示例展示DBA与非DBA例程交互的情况。假设dbspc_cleanup()过程调用clust_catalog()过程,而clust_catalog()创建索引。clust_catalog()的SPL源代码包括DBA权限的使用。dbspc_cleanup()过程以下列语句调用其他例程:

如果Tony以DBA关键字注册了dbspc_cleanup(),但clust_catalog()未以DBA关键字注册,则同时拥有两个例程的Tony也拥有创建的索引。相反,如果clust_catalog()是DBA过程,无DBA权限的用户Marty在运行dbspc_cleanup()时将拥有索引。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com