返回被授予指定系统特权、系统角色、用户定义角色或用户名的所有角色,或者显示整个角色层次树。
sp_displayroles( user_role_name , display_mode , grant_type )
user_role_name 使用此 CHAR(128) 参数可指定系统特权、系统角色、用户定义角色的名称或用户名。如果未指定或者为 NULL,则缺省使用当前用户。
display_mode 使用此 VARCHAR(30) 参数可指定返回父级层次还是子级层次(相对于 user_role_name)。如果未指定 display_mode 或者其为 NULL,则仅返回显式授予的角色和特权(不包括继承的角色或特权)。display_mode 的可能值包括以下几项:
expand_up 在 user_role_name 的父层次树中显示被授予 user_role_name 的系统角色。
expand_down 显示被授予 user_role_name 的系统角色和特权,其中包括 user_role_name 的子级角色层次树。
grant_type 使用此 VARCHAR(30) 参数可控制返回的授予类型。如果未指定,则缺省使用 ALL。grant_type 的可能值包括以下几项:
NO_ADMIN 显示使用 WITH NO ADMIN OPTION 或 WITH ADMIN OPTION 子句授予 user_role_name 的所有角色和系统特权。
ADMIN 返回使用 WITH ADMIN OPTION 或 WITH ADMIN ONLY OPTION 子句授予 user_role_name 的所有角色和系统特权。
ALL 显示被授予 user_role_name 的所有角色/系统特权。
列名 | 数据类型 | 说明 |
---|---|---|
role_name | CHAR(128) | 被授予 user_role_name 的角色或系统特权。 |
parent_role_name | CHAR(128) | user_role_name 的父项的角色名。 |
grant_type | CHAR(10) | 有关 user_role_name 是否具有管理权限的信息。可能的值包括:NO ADMIN、ADMIN 或 ADMIN ONLY。 |
role_level | SMALLINT |
使用 expand_down 模式时:直接授予的角色的级别为 1,其下面的下一个级别为 2,依此类推。 使用 expand_up 模式时:被授予 user_role_name 的角色的级别为 0,其上面的下一个层次级别为 -1,依此类推。 |
对于系统特权,结果显示系统特权名,而不是系统特权角色名。使用 expand_down 模式时,级别 1(直接授予的角色)的 parent_role_name 为 NULL。使用缺省模式时,role_level 列为 1,而 parent_role_name 为 NULL。因为在缺省模式下,仅显示直接授予的角色。
如果将此过程用于使用 expand_up 模式的用户,则不返回任何结果,因为用户位于任意角色层次的顶层。同样,如果将此过程用于 expand_down 模式下的不可变系统特权,也不会返回任何结果,因为不可变系统特权位于任意角色层次中的底层。缺省模式是仅显示直接授予的角色/系统特权。
SQL/2008 服务商扩充。
对自己执行此过程时不需要任何特权。但是,要返回另一个用户 ID 或角色的系统特权或角色,您必须具有 MANAGE ROLES 系统特权。
无
以下语句返回为发出该命令的用户授予的所有角色。
CALL sp_displayroles(); |
此示例返回被授予 SYS_SPATIAL_ADMIN_ROLE 系统角色的系统特权列表:
CALL sp_displayroles( 'SYS_SPATIAL_ADMIN_ROLE' ); |
role_name | parent_role_name | grant_type | role_level |
---|---|---|---|
PUBLIC | (NULL) | NO ADMIN | 1 |
MANAGE ANY SPATIAL OBJECT | (NULL) | NO ADMIN | 1 |
此示例返回被授予 SYS_SPATIAL_ADMIN_ROLE 的系统特权列表,其中包括角色层次中该角色上面的所有角色:
CALL sp_displayroles( 'SYS_SPATIAL_ADMIN_ROLE', 'expand_up'); |
role_name | parent_role_name | grant_type | role_level |
---|---|---|---|
SYS_AUTH_DBA_ROLE | dbo | ADMIN | -3 |
SYS_AUTH_DBA_ROLE | SYS_RUN_REPLICATION_ROLE | ADMIN | -3 |
SYS_AUTH_SSO_ROLE | SYS_AUTH_DBA_ROLE | ADMIN | -2 |
MANAGE ROLES | SYS_AUTH_SSO_ROLE | ADMIN | -1 |
MANAGE ROLES | SYS_REPLICATION_ADMIN_ROLE | NO ADMIN | -1 |
SYS_SPATIAL_ADMIN_ROLE | MANAGE ROLES | ADMIN ONLY | 0 |
以下语句返回被授予用户 User1 的所有系统特权:
CALL sp_displayroles( 'User1' ); |
此示例返回与视图相关的系统特权列表:
SELECT sys_priv_name FROM sp_sys_priv_role_info() WHERE sys_priv_name LIKE '%VIEW%' |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |