sys.server_role_members (Transact-SQL)

适用于: 是SQL Server(所有支持的版本) 是Azure SQL 托管实例 是并行数据仓库

为每个固定和用户定义的服务器角色的每个成员返回一行。

列名称 数据类型 说明
role_principal_id int 角色的服务器主体 ID。
member_principal_id int 成员的服务器主体 ID。

若要添加或删除服务器角色成员身份,请使用ALTER server role (transact-sql SQL)声明。

权限

登录名可以查看自己的服务器角色成员身份,并且可以查看 principal_id 的固定服务器角色成员。 若要查看所有服务器角色成员身份,需要具有 VIEW ANY DEFINITION 权限或 securityadmin 固定服务器角色的成员身份。

登录名还可以查看他们拥有的角色的角色成员身份。

在 Azure SQL 数据库中,服务器角色 # #MS_DefinitionReader # # 的成员可以查询所有目录视图。

有关详细信息,请参阅 Metadata Visibility Configuration

示例

本节中的示例演示如何在 Azure SQL 数据库中使用服务器级角色。

A. 返回服务器角色成员的列表

下面的示例返回角色及其成员的名称和 Id。

SELECT  roles.principal_id                          AS RolePrincipalID
    ,   roles.name                                  AS RolePrincipalName
    ,   server_role_members.member_principal_id     AS MemberPrincipalID
    ,   members.name                                AS MemberPrincipalName
FROM sys.server_role_members AS server_role_members
INNER JOIN sys.server_principals AS roles
    ON server_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.server_principals AS members 
    ON server_role_members.member_principal_id = members.principal_id  
;

备注

在 Azure SQL 数据库中,SQL 登录名不会保留在 sys.server_principals 目录视图中。 TTherefore,若要在 Azure SQL 数据库中检索服务器级别的角色成员身份,则 sys.sql_logins 需要联接目录视图。

B. Azure SQL 数据库:列出作为服务器级别角色成员的所有主体 (SQL 身份验证)

以下语句使用 sys.server_role_members 和目录视图返回任何固定服务器级别角色的所有成员 sys.sql_logins 。 此语句必须在虚拟 master 数据库中运行。

SELECT
        sql_logins.principal_id         AS MemberPrincipalID
    ,   sql_logins.name                 AS MemberPrincipalName
    ,   roles.principal_id              AS RolePrincipalID
    ,   roles.name                      AS RolePrincipalName
FROM sys.server_role_members AS server_role_members
INNER JOIN sys.server_principals AS roles
    ON server_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.sql_logins AS sql_logins 
    ON server_role_members.member_principal_id = sql_logins.principal_id
;  
GO  

另请参阅

目录视图 (Transact-SQL)
安全性目录视图 (Transact-SQL)
服务器级别角色
主体(数据库引擎)