Condividi tramite


sys.server_role_members (Transact-SQL)

Si applica a: SQL Server Istanza gestita di SQL di Azure Piattaforma di strumenti analitici (PDW)

Restituisce una riga per ogni membro di ogni ruolo del server predefinito e definito dall'utente.

Nome colonna Tipo di dati Descrizione
role_principal_id int ID dell'entità server del ruolo.
member_principal_id int ID dell'entità server del membro.

Per aggiungere o rimuovere l'appartenenza al ruolo del server, usare l'istruzione ALTER SERVER ROLE (Transact-SQL).

Autorizzazioni

Gli account di accesso possono visualizzare la propria appartenenza al ruolo del server e possono visualizzare i principal_id dei membri dei ruoli predefiniti del server. Per visualizzare tutte le appartenenze ai ruoli del server, è necessaria l'autorizzazione VIEW ANY DEFINITION o l'appartenenza al ruolo predefinito del server securityadmin .

Gli account di accesso possono anche visualizzare le appartenenze ai ruoli di cui sono proprietari.

In database SQL di Azure i membri del ruolo server ##MS_DefinitionReader## possono eseguire query su tutte le viste del catalogo.

Per altre informazioni, vedere Metadata Visibility Configuration.

Esempi

Gli esempi in questa sezione illustrano come gestire i ruoli a livello di server nel database SQL di Azure.

R. Restituisce l'elenco dei membri del ruolo server

Nell'esempio seguente vengono restituiti i nomi e gli ID dei ruoli e dei relativi membri.

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  
;

Nota

In database SQL di Azure gli account di accesso SQL non vengono salvati in modo permanente nella vista del sys.server_principals catalogo. Pertanto, per recuperare l'appartenenza al ruolo a livello di server in database SQL di Azure, è necessario unire la vista sys.sql_logins del catalogo.

B. database SQL di Azure: elencare tutte le entità (autenticazione SQL) che sono membri di un ruolo a livello di server

L'istruzione seguente restituisce tutti i membri di qualsiasi ruolo a livello di server predefinito usando le viste del catalogo sys.server_role_members e sys.sql_logins. Questa istruzione deve essere eseguita nel database master virtuale.

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  

Vedi anche

Viste del catalogo (Transact-SQL)
Viste del catalogo della sicurezza (Transact-SQL)
Ruoli a livello di server
Entità di sicurezza (motore di database)