sys.server_role_members (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體Analytics Platform System (PDW)

針對每個固定和使用者定義伺服器角色的每個成員,各傳回一個數據列。

資料行名稱 資料類型 描述
role_principal_id int 角色的伺服器主體標識碼。
member_principal_id int 成員的伺服器主體標識碼。

若要新增或移除伺服器角色成員資格,請使用 ALTER SERVER ROLE (Transact-SQL) 語句。

權限

登入可以檢視自己的伺服器角色成員資格,並可檢視固定伺服器角色成員principal_id的成員。 若要檢視所有伺服器角色成員資格,需要 SECURITYadmin 固定伺服器角色中的 VIEW ANY DEFINITION 許可權或成員資格。

登入也可以檢視他們所擁有的角色角色成員資格。

在 Azure SQL 資料庫 中,伺服器角色 ##MS_DefinitionReader## 的成員可以查詢所有目錄檢視。

如需相關資訊,請參閱 Metadata Visibility Configuration

範例

本章節中的範例會示範如何處理 Azure SQL 資料庫中的伺服器層級角色。

A. 傳回伺服器角色成員的清單

下列範例會傳回角色及其成員的名稱和標識碼。

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_memberssys.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)
伺服器層級角色
主體 (資料庫引擎)