Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - 数据库管理 » 用户和数据库安全 » 用户安全性(角色和特权) » 用户

 

查看用户或角色的角色与特权 (SQL)

查看用户所拥有的角色和特权,包括继承的角色和特权。也可以使用此任务查看给定角色的角色和特权。

前提条件

  • sp_displayroles 系统过程:对自己执行此过程时不需要特权。但要返回另一个用户 ID 或角色的系统特权或角色,您必须具有 MANAGE ROLES 系统特权。

  • sp_objectpermission 系统特权:对自己或自己所拥有的对象执行此过程时不需要特权。但要对另一个用户 ID 或另一个用户 ID 所拥有的对象调用此过程,您必须具有 MANAGE ANY OBJECT PRIVILEGE 系统特权。

 任务
  1. 连接到数据库

  2. 要查看用户所拥有的角色和系统特权,执行与以下相类似的语句以调用 sp_displayroles 系统过程,其中 userid 是该用户的用户 ID:

    SELECT * FROM sp_displayroles( 'userid', 'expand_down');
  3. 要查看用户所拥有的对象级特权,执行与以下相类似的语句以调用 sp_objectpermission 系统过程:

    SELECT * FROM sp_objectpermission('userid');

结果

sp_displayroles 结果的 role_name 列中包括继承的角色和系统特权,以及显式授予该用户的角色和系统特权。如果角色或系统特权是从另一个角色继承的,则将在 parent_role_name 列中指明该角色的名称。通过 grant_type column 列可以判断用户是否具有角色或系统特权的管理权限。role_level 列可传达继承层次,因为发生继承时可能遇到成员所隶属于的角色同时也是另一个角色的成员等情况。这有助于解决在撤消用户的角色或特权后该用户仍可继续使用所撤消的角色和特权的问题。

sp_objectpermission 的结果中包含继承的对象级特权以及显式授予该用户的特权。通过被授予者列可了解对象级特权是从何处继承的。通过授予者列可了解实际授予是由谁执行的。通过可授予列可了解用户是否对特权具有管理权限。

 另请参见