sys.server_role_members (Transact-SQL)
适用于: SQL Server Azure SQL 托管实例 分析平台系统 (PDW)
为每个固定和用户定义的服务器角色的每个成员返回一行。
列名称 | 数据类型 | 描述 |
---|---|---|
role_principal_id | int | 角色的服务器主体 ID。 |
member_principal_id | int | 成员的服务器主体 ID。 |
若要添加或删除服务器角色成员身份,请使用 ALTER SERVER ROLE (Transact-SQL) 语句。
权限
登录名可以查看自己的服务器角色成员身份,并可以查看固定服务器角色的成员principal_id。 若要查看所有服务器角色成员身份,需要在 securityadmin 固定服务器角色中具有 VIEW ANY DEFINITION 权限或成员身份。
登录名还可以查看他们拥有的角色的角色成员身份。
在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
目录视图中。 因此,若要检索Azure SQL 数据库中的服务器级角色成员身份,需要加入目录视图sys.sql_logins
。
B. Azure SQL 数据库:列出所有主体(SQL 身份验证),这些主体是服务器级角色的成员
以下语句使用 sys.server_role_members
和 sys.sql_logins
目录视图返回任何固定服务器级角色的所有成员。 该语句必须在虚拟主数据库中运行。
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)
服务器级别角色
主体(数据库引擎)