IS_MEMBER (Transact-SQL)
Indica se l'utente corrente è membro del gruppo di Microsoft Windows o del ruolo di database di SQL Server specificato.
Si applica a: SQL Server (SQL Server 2008 tramite versione corrente), Database SQL di Windows Azure (versione iniziale tramite versione corrente). |
Convenzioni della sintassi Transact-SQL
Sintassi
IS_MEMBER ( { 'group' | 'role' } )
Argomenti
' group '
Si applica a: SQL Server 2008 tramite SQL Server 2014.
Nome del gruppo di Windows di cui viene eseguita la verifica, nel formato Domain\Group. group è di tipo sysname.
' role '
Nome del ruolo di SQL Server di cui viene eseguita la verifica. 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 è membro del gruppo o ruolo specificato nell'argomento group o role. |
1 |
L'utente corrente è membro del gruppo o ruolo specificato nell'argomento group o role. |
NULL |
Uno dei due argomenti group o role non è valido. Quando la query viene eseguita da un account di accesso di SQL Server o da un account di accesso che utilizza 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 a livello di appartenenza al gruppo apportate dopo la connessione da parte di un utente a un'istanza di SQL Server. Un account di accesso di SQL Server o un ruolo applicazione di SQL Server non possono eseguire una query sull'appartenenza del gruppo di Windows.
Per aggiungere e rimuovere membri da un ruolo del database, utilizzare ALTER ROLE (Transact-SQL). Per aggiungere e rimuovere membri da un ruolo del server, utilizzare ALTER SERVER ROLE (Transact-SQL).
Questa funzione valuta l'appartenenza al ruolo, non l'autorizzazione sottostante. Ad esempio, il ruolo predefinito del database db_owner dispone dell'autorizzazione CONTROL DATABASE. Se l'utente dispone dell'autorizzazione CONTROL DATABASE ma non è membro del ruolo, questa funzione indicherà correttamente che l'utente non è membro del ruolo db_owner, anche se dispone delle stesse autorizzazioni.
Funzioni correlate
Per determinare se un altro account di accesso di SQL Server è un membro di un ruolo del database, utilizzare IS_ROLEMEMBER (Transact-SQL). Per determinare se un account di accesso di SQL Server è un membro di un ruolo del server, utilizzare 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
Vedere anche
Riferimento
IS_SRVROLEMEMBER (Transact-SQL)
Viste del catalogo relative alla sicurezza (Transact-SQL)
Funzioni di sicurezza (Transact-SQL)