Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
databáze SQL v Microsoft Fabric
Označuje, zda je specifikovaný princip databáze členem dané databázové role.
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).
Související funkce
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)