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).
Funzioni correlate
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)