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


IS_MEMBER (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 a jelenlegi felhasználó tagja-e a megadott Microsoft Windows csoportnak, Microsoft Entra csoportnak vagy SQL Server adatbázis-szerepnek.

A IS_MEMBER funkció Microsoft Entra csoportok számára is támogatott. Az egyetlen eset, amikor IS_MEMBER nem működik, az az, ha a csoport a Microsoft Entra adminisztrátora az SQL példányhoz.

Transact-SQL szintaxis konvenciók

Megjegyzés:

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

Szemantika

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

Arguments

'csoport'
Érvényes: SQL Server 2008 (10.0.x) és újabb verziókra

Ez a Windows vagy Microsoft Entra csoport neve, amelyet ellenőriznek. Egy Windows csoportnak a Domain\Group formátumban kell lennie. A csoporta sysname.

'szerep'
Az SQL Server szerepkör neve, amit ellenőriznek. A szerepa sysname , és magában foglalhatja az adatbázis rögzített vagy felhasználó által definiált szerepeket, de nem a szerver szerepeket.

Visszatérési típusok

int

Megjegyzések

IS_MEMBER a következő értékeket adja vissza.

Visszaadott érték Description
0 A jelenlegi felhasználó nem tagja a csoportnak vagy a szerepnek.
1 A jelenlegi felhasználó egy csoport vagy szerep tagja.
NULLA Sem csoport , sem szerep nem érvényes. Ha SQL Server bejelentkezés vagy egy alkalmazási szerep használatával jelentkezik, a NULL értéket adja vissza egy Windows csoporthoz.

IS_MEMBER a Windows által létrehozott hozzáférési tokent vizsgálva határozza meg a Windows csoporttagságát. A hozzáférési token nem tükrözi azokat a csoporttagsági változásokat, amelyek akkor történnek, amikor a felhasználó csatlakozik egy SQL Server példányhoz. A Windows csoporttagságot nem lehet SQL Server bejelentkezéssel vagy SQL Server alkalmazási szerepkörrel lekérdezni.

Tagok hozzáadásához és eltávolításához adatbázis szerepéből használjuk az ALTER ROLE (Transact-SQL) opciót. Tagok hozzáadásához és eltávolításához szerver szerepből használd az ALTER SERVER ROLE (Transact-SQL) gombot.

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 meghatározására, hogy egy másik SQL Server bejelentkezés tag-e egy adatbázis szerepnek, használd a IS_ROLEMEMBER (Transact-SQL) gombot. 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.

Példák

Az alábbi példa ellenőrzi, hogy a jelenlegi felhasználó adatbázis szerep vagy Windows domain csoport tagja-e.

-- 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  

Lásd még:

IS_SRVROLEMEMBER (Transact-SQL)
Főelemek (Adatbázismotor)
Biztonságikatalógus nézetei (Transact-SQL)
Biztonsági funkciók (Transact-SQL)