IS_MEMBER (Transact-SQL)

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

Indica se l'utente corrente è membro del gruppo di Microsoft Windows, del gruppo Microsoft Entra o del ruolo del database di SQL Server specificato.

La funzione IS_MEMBER è supportata per i gruppi di Microsoft Entra. L'unico caso in cui IS_MEMBER non funziona è se il gruppo è l'amministratore di Microsoft Entra per l'istanza di SQL.

Convenzioni relative alla sintassi Transact-SQL

Nota

Microsoft Entra ID era precedentemente conosciuto come Azure Active Directory (Azure AD).

Sintassi

IS_MEMBER ( { 'group' | 'role' } )  

Argomenti

' group '
Si applica a: SQL Server 2008 (10.0.x) e versioni successive

Nome del gruppo Windows o Microsoft Entra selezionato. Un gruppo di Windows deve essere nel formato Gruppo di domini\. group è di tipo sysname.

' role '
Nome del ruolo di SQL Server sottoposto al controllo. role è di tipo sysname e può includere i ruoli predefiniti del database o quelli definiti dall'utente, ma non i ruoli del server.

Tipi restituiti

int

Osservazioni:

IS_MEMBER restituisce i valori seguenti.

Valore restituito Descrizione
0 L'utente corrente non è un membro del gruppo o del ruolo.
1 L'utente corrente è membro di group o role.
NULL Il gruppo o il ruolo non è valido. Quando la query viene eseguita da un account di accesso di SQL server o da un account di accesso che usa un ruolo applicazione esegue una query, restituisce NULL per un gruppo di Windows.

IS_MEMBER determina l'appartenenza al gruppo di Windows tramite l'analisi di un token di accesso creato da Windows. Il token di accesso non riflette le modifiche apportate all'appartenenza al gruppo dopo che un utente si connette a un'istanza di SQL Server. L'appartenenza a gruppi di Windows non può essere eseguita su query da un account di accesso di SQL Server o da un ruolo applicazione di SQL Server.

Per aggiungere e rimuovere membri da un ruolo del database, usare ALTER ROLE (Transact-SQL). Per aggiungere e rimuovere membri da un ruolo del server, usare ALTER SERVER ROLE (Transact-SQL).

Questa funzione valuta l'appartenenza al ruolo, non l'autorizzazione sottostante. Il ruolo predefinito del database db_owner dispone ad esempio dell'autorizzazione CONTROL DATABASE. Se l'utente dispone dell'autorizzazione CONTROL DATABASE ma non è membro del ruolo, questa funzione segnala correttamente che l'utente non è membro del ruolo db_owner , anche se l'utente ha le stesse autorizzazioni.

I membri del ruolo predefinito del server sysadmin accedono a ogni database come utenti dbo. Durante la verifica dell'autorizzazione di membro del ruolo predefinito del server sysadmin vengono controllate le autorizzazioni per dbo, non l'account di accesso originale. Poiché dbo non può essere aggiunto a un ruolo del database e non esiste nei gruppi di Windows, dbo restituisce sempre 0 (o NULL se il ruolo non esiste).

Per determinare se un altro account di accesso di SQL server è membro di un ruolo del database, usare IS_ROLEMEMBER (Transact-SQL). Per determinare se un account di accesso di SQL server è membro di un ruolo del server, usare IS_SRVROLEMEMBER (Transact-SQL).

Esempi

Nell'esempio seguente viene verificato se l'utente corrente è membro di un ruolo di database oppure di un gruppo di domini di Windows.

-- Test membership in db_owner and print appropriate message.  
IF IS_MEMBER ('db_owner') = 1  
   PRINT 'Current user is a member of the db_owner role'  
ELSE IF IS_MEMBER ('db_owner') = 0  
   PRINT 'Current user is NOT a member of the db_owner role'  
ELSE IF IS_MEMBER ('db_owner') IS NULL  
   PRINT 'ERROR: Invalid group / role specified';  
GO  
  
-- Execute SELECT if user is a member of ADVWORKS\Shipping.  
IF IS_MEMBER ('ADVWORKS\Shipping') = 1  
   SELECT 'User ' + USER + ' is a member of ADVWORKS\Shipping.';   
GO  

Vedi anche

IS_SRVROLEMEMBER (Transact-SQL)
Entità di sicurezza (Motore di database)
Viste del catalogo relative alla sicurezza (Transact-SQL)
Funzioni di sicurezza (Transact-SQL)