Sdílet prostřednictvím


IS_MEMBER (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)databáze SQL v Microsoft Fabric

Označuje, zda je současný uživatel členem specifikované skupiny Microsoft Windows, skupiny Microsoft Entra nebo databázové role SQL Server.

Funkce IS_MEMBER je podporována pro Microsoft Entra skupiny. Jediný případ, kdy IS_MEMBER nefunguje, je, když je skupina administrátorem Microsoft Entra pro SQL instanci.

Transact-SQL konvence syntaxe

Poznámka:

Microsoft Entra ID se dříve označovala jako Azure Active Directory (Azure AD).

Syntaxe

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

Arguments

'skupina'
Platí na: SQL Server 2008 (10.0.x) a novější

Je název skupiny Windows nebo Microsoft Entra, která je kontrolována. Windows skupina musí být ve formátu Domain\Group. skupina je sysname.

'role'
Je název role SQL Serveru, která je kontrolována. role je sysname a může zahrnovat databázové pevné role nebo uživatelsky definované role, ale ne serverové role.

Návratové typy

int

Poznámky

IS_MEMBER vrátí následující hodnoty.

Návratová hodnota Description
0 Současný uživatel není členem skupiny ani role.
1 Současný uživatel je členem skupiny nebo role.
NULA Ani skupina, ani role nejsou platné. Když je dotazováno přihlášením SQL Serveru nebo pomocí aplikační role, vrací NULL pro skupinu Windows.

IS_MEMBER určuje členství ve Windows skupině zkoumáním přístupového tokenu vytvořeného Windows. Přístupový token neodráží změny ve skupinovém členství, které nastanou poté, co se uživatel připojí k instanci SQL Serveru. Členství ve Windows skupině nelze dotazovat přihlášením SQL Server ani rolí SQL Server aplikace.

Pro přidání a odebrání členů z databázové role použijte ALTER ROLE (Transact-SQL). Pro přidání a odebrání členů ze serverové role použijte ALTER SERVER ROLE (Transact-SQL).

Tato funkce hodnotí členství v roli, nikoli základní oprávnění. Například role db_owner pevná databáze má oprávnění CONTROL DATABASE . Pokud má uživatel oprávnění CONTROL DATABASE , ale není členem role, tato funkce správně hlásí, že uživatel není členem db_owner role, i když má stejná oprávnění.

Členové role pevného správce systému zadají každou databázi jako uživatel DBO . Kontrola oprávnění člena role pevného správce systému kontroluje oprávnění pro dbo, ne původní přihlášení. Protože dbo nelze přidat do databázové role a neexistuje ve Windows skupinách, dbo vždy vrací 0 (nebo NULL, pokud role neexistuje).

Pro určení, zda je jiný přihlášení SQL Serveru členem databázové role, použijte IS_ROLEMEMBER (Transact-SQL). Pro určení, zda je přihlášení SQL Serveru členem role serveru, použijte IS_SRVROLEMEMBER (Transact-SQL).

Examples

Následující příklad kontroluje, zda je současný uživatel členem databázové role nebo skupiny domén 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  

Viz také

IS_SRVROLEMEMBER (Transact-SQL)
Hlavní subjekty (databázový stroj)
Zobrazení katalogu zabezpečení (Transact-SQL)
Funkce zabezpečení (Transact-SQL)