Condividi tramite


IS_MEMBER (Transact-SQL)

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

Icona di collegamento a un argomentoConvenzioni 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 può eseguire una query sull'appartenenza del gruppo di Windows.

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.

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