Sdílet prostřednictvím


IS_ROLEMEMBER (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 specifikovaný princip databáze členem dané databázové role.

Transact-SQL konvence syntaxe

Poznámka:

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

Syntaxe

IS_ROLEMEMBER ( 'role' [ , 'database_principal' ] )  

Arguments

'role'
Je název databázové role, která je kontrolována. Role je Sysname.

'database_principal'
Je název uživatele databáze, role databáze nebo role aplikace, kterou je třeba ověřit. database_principal je sysname s výchozím nastavením NULL. Pokud není určena žádná hodnota, výsledek je založen na aktuálním kontextu provádění. Pokud parametr obsahuje slovo NULL, vrátí NULL.

Návratové typy

int

Návratová hodnota Description
0 database_principal není členem role.
1 database_principal je členem role.
NULA database_principalnebo role není platná, nebo nemáte povolení zobrazit členství v roli.

Poznámky

Funkce IS_ROLEMEMBER není podporována pro správce Microsoft Entra, pokud je administrátor členem skupiny Microsoft Entra. Funkce IS_ROLEMEMBER je podporována pro uživatele Microsoft Entra, kteří jsou členy skupiny Microsoft Entra, pokud touto skupinou není správce Microsoft Entra.

Použijte IS_ROLEMEMBER k určení, zda může současný uživatel provést akci vyžadující oprávnění databázové role.

Pokud je database_principal založen na přihlášení Windows, například Contoso\Mary5, IS_ROLEMEMBER vrátí NULL, pokud database_principal nebyl udělen nebo odmítnut přímý přístup ke SQL Serveru.

Pokud není k dispozici volitelný parametr database_principal a pokud je database_principal založen na přihlášení do domény Windows, může být členem databázové role prostřednictvím členství ve Windows skupině. Pro vyřešení takových nepřímých členství IS_ROLEMEMBER požaduje informace o členství ve skupinách Windows od doménového řadiče. Pokud je doménový řadič nepřístupný nebo nereaguje, IS_ROLEMEMBER vrátí informace o členství v roli tím, že zohlední pouze uživatele a jeho lokální skupiny. Pokud uživatel není aktuální, hodnota vrácená IS_ROLEMEMBER se může lišit od poslední aktualizace dat autentizátoru (například Active Directory) pro SQL Server.

Pokud je použit volitelný parametr database_principal , uživatel musí existovat v sys.database_principals, jinak IS_ROLEMEMBER vrátí NULL.

Pokud je parametr database_principal založen na přihlášení do domény nebo na skupině Windows a doménový řadič je nepřístupný, volání IS_ROLEMEMBER selžou a mohou vrátit nesprávná nebo neúplná data.

Pokud doménový řadič není k dispozici, volání IS_ROLEMEMBER vrátí přesné informace, když lze Windows princip autentizovat lokálně, například lokálním Windows účtem nebo přihlášením SQL Serveru.

IS_ROLEMEMBER vždy vrací 0, když je jako hlavní argument databáze použita skupina Windows, a tato Windows skupina je členem jiné skupiny Windows, která je zase členem dané databázové role.

Řízení uživatelských účtů (UAC) ve Windows Vista a Windows Server 2008 může také přinést odlišné výsledky. To záviselo na tom, zda uživatel přistupoval k serveru jako člen skupiny Windows, nebo jako konkrétní uživatel SQL Serveru.

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ě nahlá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 aktuální uživatel členem specifikované skupiny Windows, Microsoft Entra skupiny nebo SQL Server databázové role, použijte IS_MEMBER (Transact-SQL). Pro určení, zda je přihlášení SQL Serveru členem role serveru, použijte IS_SRVROLEMEMBER (Transact-SQL).

Povolení

Vyžaduje oprávnění ZOBRAZIT DEFINICI pro databázovou roli.

Examples

Následující příklad ukazuje, zda je současný uživatel členem pevné databázové db_datareader role.

IF IS_ROLEMEMBER ('db_datareader') = 1  
   print 'Current user is a member of the db_datareader role'  
ELSE IF IS_ROLEMEMBER ('db_datareader') = 0  
   print 'Current user is NOT a member of the db_datareader role'  
ELSE IF IS_ROLEMEMBER ('db_datareader') IS NULL  
   print 'ERROR: The database role specified is not valid.';  

Viz také

VYTVOŘIT ROLI (Transact-SQL)
ALTEROVÁ ROLE (Transact-SQL)
DROP ROLE (Transact-SQL)
VYTVOŘIT SERVEROVOU ROLI (Transact-SQL)
ROLE ALTER SERVERU (Transact-SQL)
ROLE DROP SERVERA (Transact-SQL)
IS_MEMBER (Transact-SQL)
IS_SRVROLEMEMBER (Transact-SQL)
Funkce zabezpečení (Transact-SQL)