Megosztás a következőn keresztül:


IS_ROLEMEMBER (Transact-SQL)

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)SQL adatbázis a Microsoft Fabric-ben

Jelzi, hogy egy meghatározott adatbázis-alap tag-e a megadott adatbázis szerepnek.

Transact-SQL szintaxis konvenciók

Megjegyzés:

A Microsoft Entra ID-t korábban Azure Active Directorynak (Azure AD) nevezték.

Szemantika

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

Arguments

'szerep'
Ez az ellenőrzött adatbázis szerep neve. A szerepa sysname.

'database_principal'
Az adatbázis-felhasználó, adatbázis szerep vagy alkalmazás szerepének neve ellenőrizendő. database_principala sysname, alapértelmezett NULL jellemmel. Ha nincs megadva érték, az eredmény a jelenlegi végrehajtási kontextuson alapul. Ha a paraméter tartalmazza a NULL szót, akkor visszaadja a NULL-t.

Visszatérési típusok

int

Visszaadott érték Description
0 database_principal nem a szerep tagja.
1 database_principala szerep tagja.
NULLA database_principal vagy szerep nem érvényes, vagy nincs engedélyed a szerep tagságának megtekintésére.

Megjegyzések

A IS_ROLEMEMBER funkciót nem támogatja egy Microsoft Entra adminisztrátor, ha az adminisztrátor egy Microsoft Entra csoport tagja. Az IS_ROLEMEMBER funkciót támogatják azok a Microsoft Entra felhasználók is, akik Microsoft Entra csoport tagjai, kivéve, ha az a csoport a Microsoft Entra adminisztrátora.

Használja IS_ROLEMEMBER-t annak megállapítására, hogy a jelenlegi felhasználó képes végrehajtani olyan műveletet, amely megköveteli az adatbázis szerepének jogosultságát.

Ha database_principal Windows bejelentkezésen alapul, például Contoso\Mary5-en, akkor IS_ROLEMEMBER NULL-ot ad vissza, kivéve, ha a database_principal engedélyt kapott vagy nem engedett meg közvetlen SQL Serverhez.

Ha az opcionális database_principal paraméter nincs megadva, és ha a database_principal Windows domain bejelentkezésen alapul, akkor az adatbázis szerepének tagja lehet egy Windows csoport tagsága révén. Az ilyen közvetett tagságok megoldásához IS_ROLEMEMBER a domain vezérlőtől kéri a Windows csoporttagsági adatokat. Ha a domain vezérlő elérhetetlen vagy nem válaszol, IS_ROLEMEMBER csak a felhasználót és a helyi csoportokat figyelembe véve adja vissza szereptagsági adatokat. Ha a megadott felhasználó nem a jelenlegi felhasználó, akkor a IS_ROLEMEMBER által visszaadott érték eltérhet a hitelesítés (például az Active Directory) SQL Server utolsó adatfrissítésétől.

Ha az opcionális database_principal paraméter megadásra kerül, a felhasználónak sys.database_principals-ben kell léteznie, különben IS_ROLEMEMBER NULL-ot ad vissza.

Ha a database_principal paraméter egy domain bejelentkezésen vagy Windows csoporton alapul, és a domain vezérlő elérhetetlen, a IS_ROLEMEMBER-hez való hívások sikertelenül járnak, és hibás vagy hiányos adatokat adhatnak vissza.

Ha a domain vezérlő nem elérhető, a IS_ROLEMEMBER-hoz hívás pontos információt ad, amikor a Windows alapvetőt helyben lehet hitelesíteni, például egy helyi Windows fiókot vagy SQL Server bejelentkezést.

IS_ROLEMEMBER mindig 0-t ad vissza, ha egy Windows csoportot használnak adatbázis fő argumentumként, és ez a Windows csoport egy másik Windows csoport tagja, amely viszont a megadott adatbázis szerepének tagja.

A Windows Vista és Windows Server 2008 felhasználói fiók-ellenőrzése (UAC) is eltérő eredményeket adhat. Ez attól függ, hogy a felhasználó Windows csoporttagként vagy egy adott SQL Server felhasználóként használta-e a szervert.

Ez a funkció a szereptagságot értékeli, nem az alapul szolgáló engedélyt. Például a db_owner fix adatbázis szerepe rendelkezik a CONTROL DATABASE jogosultsággal. Ha a felhasználónak van CONTROL DATABASE jogosultsága, de nem tagja a szerepnek, ez a függvény helyesen jelenti, hogy a felhasználó nem tagja a db_owner szerepnek, még akkor is, ha a felhasználónak ugyanaz a jogosultsága van.

A rendszertamis-fix szerver tagjai minden adatbázisba dbo felhasználóként lépnek be. A rendszergazdák tagjának engedélyét ellenőrizem a fix szerver szerep számára, a DBO engedélyeit ellenzi, nem az eredeti bejelentkezést. Mivel a dbo nem adható be adatbázis szerepbe, és nem létezik Windows csoportokban, a dbo mindig 0-t ad vissza (vagy NULL-t, ha a szerep nem létezik).

Annak megállapításához, hogy a jelenlegi felhasználó tag-e a megadott Windows csoportnak, Microsoft Entra csoportnak vagy SQL Server adatbázis-szerepnek, használja a IS_MEMBER (Transact-SQL) jelet. Annak megállapításához, hogy egy SQL Server bejelentkezés szerver szerepkör tagja-e, használd a IS_SRVROLEMEMBER (Transact-SQL) jelet.

Permissions

Az adatbázis szerepéhez VIEW DEFINITION engedély szükséges.

Példák

Az alábbi példa mutatja, hogy a jelenlegi felhasználó tag-e a db_datareader fix adatbázis szerepnek.

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.';  

Lásd még:

SZEREP LÉTREHOZÁSA (Transact-SQL)
ÚJ SZEREP (Transact-SQL)
DROP ROLE (Transact-SQL)
CREATE SERVER ROLE (Transact-SQL)
SZERVER SZEREPÉNEK MÓDOSÍTÁSA (Transact-SQL)
DROP SZERVER SZEREP (Transact-SQL)
IS_MEMBER (Transact-SQL)
IS_SRVROLEMEMBER (Transact-SQL)
Biztonsági funkciók (Transact-SQL)