生成有关授予指定角色或用户 ID 的对象特权的报告,或生成有关在指定对象或 dbspace 上授予的对象特权的报告。
sp_objectpermission( object_name , object_owner , object_type )
object_name 对象、dbspace、用户或角色的 CHAR(128) 名称。如果未指定此参数,则显示当前用户的对象特权。缺省值为 NULL。
object_owner 指定对象名称的对象所有者的 CHAR(128) 名称。显示由指定对象所有者拥有的指定对象的对象特权。缺省值为 NULL。
object_type 数据库对象的 CHAR(20) 类型。如果未指定任何值,则返回所有对象类型的特权。缺省值为 NULL。有效值包括:
列名 | 数据类型 | 说明 |
---|---|---|
grantor | CHAR(128) | 返回授予者的用户 ID。 |
grantee | CHAR(128) | 返回被授予者的用户 ID。 |
object_name | CHAR(128) | 返回对象的名称。 |
owner | CHAR(128) | 返回对象所有者的名称。 |
object_type | CHAR(20) | 返回对象的类型。 |
column_name | CHAR(128) | 返回列的名称。 |
permission | CHAR(20) | 返回特权的名称。 |
grantable | CHAR(1) | 返回表示特权是否可授予的值。 |
所有参数均为可选,并可生成以下报告:
如果输入为对象(表、视图、过程、函数、序列等),则过程显示针对该对象具有不同对象特权的所有用户和角色的列表。
如果输入为角色或用户,则过程显示授予该角色或输入的所有对象特权的列表。
如果输入为 dbspace 名,则过程显示对指定 dbspace 具有 CREATE 特权的所有用户和角色的列表。
通过执行 sp_objectpermission 来显示用户或角色的对象特权时,也将显示通过角色授予继承而来的对象特权。缺省情况下,object_type 为 NULL,并将显示与指定对象名称匹配的所有现有对象类型的对象特权。
SQL/2008 服务商扩充。
对自己或自己所拥有的对象执行此过程时不需要特权。但要对另一个用户 ID 或另一个用户 ID 所拥有的对象调用此过程,您必须具有 MANAGE ANY OBJECT PRIVILEGE 系统特权。
要对 dbspace 执行此过程,您必须具有 MANAGE ANY DBSPACE 系统特权。
无
以下语句返回授予 DIAGNOSTICS 系统角色的对象级特权。根据本示例的要求,此结果已经截断。
CALL sp_objectpermission( 'diagnostics' ); |
grantor | grantee | object_name | owner | object_type | column_name | permission | grantable |
---|---|---|---|---|---|---|---|
SYS | diagnostics | sa_tmp_diagnostic_optrewrite | dbo | TABLE | (NULL) | SELECT | N |
SYS | diagnostics | sa_tmp_diagnostic_optrewrite | dbo | TABLE | (NULL) | INSERT | N |
SYS | diagnostics | sa_tmp_diagnostic_optrewrite | dbo | TABLE | (NULL) | UPDATE | N |
SYS | diagnostics | sa_tmp_diagnostic_optrewrite | dbo | TABLE | (NULL) | DELETE | N |
SYS | diagnostics | sa_tmp_diagnostic_optorder | dbo | TABLE | (NULL) | SELECT | N |
SYS | diagnostics | sa_tmp_diagnostic_optorder | dbo | TABLE | (NULL) | INSERT | N |
SYS | diagnostics | sa_tmp_diagnostic_optorder | dbo | TABLE | (NULL) | UPDATE | N |
SYS | diagnostics | sa_tmp_diagnostic_optorder | dbo | TABLE | (NULL) | DELETE | N |
SYS | diagnostics | sa_tmp_diagnostic_optquantifier | dbo | TABLE | (NULL) | SELECT | N |
SYS | diagnostics | sa_tmp_diagnostic_optquantifier | dbo | TABLE | (NULL) | UPDATE | N |
... | ... | ... | ... | ... | ... | ... | ... |
结果显示,在许多表中 DIAGNOSTICS 系统角色具有对象级权限。此结果是有意义的,因为这些表用于存储数据库跟踪和应用程序分析的诊断信息。
以下语句返回授予 ml_server 用户的对象级特权。
CALL sp_objectpermission( 'ml_server' ); |
以下语句返回对系统 dbspace 具有的对象级特权。
CALL sp_objectpermission( object_name='system', object_type='DBSPACE' ); |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |