Condividi tramite


IS_MEMBER (Transact-SQL)

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

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

  • ' group '
    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)

Concetti

Entità (Motore di database)