sys.database_role_members (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

为每个数据库角色的每个成员返回一行。 数据库用户、应用程序角色和其他数据库角色可以是数据库角色的成员。 若要将成员添加到角色,请将 ALTER ROLE 语句与选项一起使用 ADD MEMBER 。 与 sys.database_principals 联接以返回值的名称 principal_id

列名称 数据类型 描述
role_principal_id int 角色的数据库主体 ID。
member_principal_id int 成员的数据库主体 ID。

权限

任何用户都可以查看自己的成员身份。 若要查看其他角色成员身份,需要在固定数据库角色或VIEW DEFINITION数据库上具有成员身份db_securityadmin

目录视图中元数据的可见性仅限于用户拥有的安全对象,或者向用户授予了某些权限的安全对象。 有关详细信息,请参阅 Metadata Visibility Configuration

示例

以下查询返回数据库角色的成员。

SELECT DP1.name AS DatabaseRoleName,   
   isnull (DP2.name, 'No members') AS DatabaseUserName   
 FROM sys.database_role_members AS DRM  
 RIGHT OUTER JOIN sys.database_principals AS DP1  
   ON DRM.role_principal_id = DP1.principal_id  
 LEFT OUTER JOIN sys.database_principals AS DP2  
   ON DRM.member_principal_id = DP2.principal_id  
WHERE DP1.type = 'R'
ORDER BY DP1.name;  

另请参阅

安全性目录视图 (Transact-SQL)
主体(数据库引擎)
目录视图 (Transact-SQL)
ALTER ROLE (Transact-SQLL)
sys.server_role_members (Transact-SQL)