Teilen über


sys.server_role_members (Transact-SQL)

Gilt für: SQL Server Azure SQL verwaltete Instanz Analytics Platform System (PDW)

Gibt eine Zeile für jedes Mitglied jeder festen und benutzerdefinierten Serverrolle zurück.

Spaltenname Datentyp Beschreibung
role_principal_id int Serverprinzipal-ID der Rolle.
member_principal_id int Serverprinzipal-ID des Mitglieds.

Verwenden Sie die ALTER SERVER ROLE (Transact-SQL)-Anweisung, um die Serverrollenmitgliedschaft hinzuzufügen oder zu entfernen.

Berechtigungen

Anmeldungen können ihre eigene Serverrollenmitgliedschaft anzeigen und die principal_id der Mitglieder der festen Serverrollen anzeigen. Zum Anzeigen aller Serverrollenmitgliedschaften ist die VIEW ANY DEFINITION-Berechtigung oder -Mitgliedschaft in der festen Serverrolle des SecurityAdmin erforderlich.

Anmeldungen können auch Rollenmitgliedschaften von Rollen anzeigen, die sie besitzen.

In Azure SQL-Datenbank können Mitglieder der Serverrolle ##MS_DefinitionReader## alle Katalogansichten abfragen.

Weitere Informationen finden Sie unter Metadata Visibility Configuration.

Beispiele

Anhand der Beispiele in diesem Abschnitt wird veranschaulicht, wie Sie Rollen auf Serverebene in Azure SQL-Datenbank verwenden.

A. Liste der Serverrollenmitglieder zurückgeben

Im folgenden Beispiel werden die Namen und IDs der Rollen und deren Member zurückgegeben.

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  
;

Hinweis

In Azure SQL-Datenbank werden SQL-Anmeldungen in der sys.server_principals Katalogansicht nicht beibehalten. Damit die Rollenmitgliedschaft auf Serverebene in Azure SQL-Datenbank abgerufen werden kann, muss die Katalogansicht sys.sql_logins verknüpft werden.

B. Azure SQL-Datenbank: Auflisten aller Prinzipale (SQL-Authentifizierung), die Mitglieder einer Rolle auf Serverebene sind

Mit der folgenden Anweisung werden alle Mitglieder aller festen Rollen auf Serverebene zurückgegeben, indem die Katalogsichten sys.server_role_members und sys.sql_logins verwendet werden. Diese Anweisung muss in der virtuellen Masterdatenbank ausgeführt werden.

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  

Weitere Informationen

Katalogsichten (Transact-SQL)
Sicherheitskatalogsichten (Transact-SQL)
Rollen auf Serverebene
Prinzipale (Datenbank-Engine)