sys.server_role_members (Transact-SQL)

gäller för:SQL ServerAzure SQL Managed InstanceAnalytics Platform System (PDW)

Returnerar en rad för varje medlem i varje fast och användardefinierad serverroll.

Kolumnnamn Datatyp Description
role_principal_id int Server-Principal ID för rollen.
member_principal_id int Server-Principal medlemmens ID.

För att lägga till eller ta bort serverrollsmedlemskap, använd satsenALTER SERVER ROLE (Transact-SQL).

Permissions

Inloggningar kan se sitt eget serverrollmedlemskap och kan se medlemmarna i de fasta serverrollerna principal_id. För att se alla serverrollsmedlemskap krävs VIEW ANY DEFINITION-behörighet eller medlemskap i securityadmin-funktionen med fast server.

Inloggningar kan också se rollmedlemskap för roller de äger.

I Azure SQL Database kan medlemmar i serverrollen ##MS_DefinitionReader## fråga alla katalogvyer.

För mer information, se inställningar för metadatasynlighet.

Examples

Exemplen i det här avsnittet visar hur du arbetar med roller på servernivå i Azure SQL Database.

A. Returlista över serverrollsmedlemmar

Följande exempel visar namn och ID:n för rollerna och deras medlemmar.

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  
;

Anmärkning

I Azure SQL Database sparas inte SQL-inloggningar i sys.server_principals katalogvyn. För att hämta rollmedlemskapet på servernivå i Azure SQL Database måste katalogvyn sys.sql_logins därför vara ansluten.

B. Azure SQL Database: Listar alla huvudpersoner (SQL-autentisering) som ingår i en servernivåroll

Följande instruktion returnerar alla medlemmar i en fast servernivåroll med hjälp av katalogvyerna sys.server_role_members och sys.sql_logins. Detta uttalande måste köras i den virtuella huvuddatabasen.

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  

Se även

katalogvyer (Transact-SQL)
Säkerhetskatalogvyer (Transact-SQL)
Server-nivåroller
Principals (Database Engine)