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


IS_SRVROLEMEMBER (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Jelzi, hogy egy SQL Server bejelentkezés tagja-e a megadott szerverszerepnek.

Transact-SQL szintaxis konvenciók

Szemantika

IS_SRVROLEMEMBER ( 'role' [ , 'login' ] )  

Arguments

'szerep'
Ez a szerver szerep neve, amit ellenőriznek. A szerepa sysname.

A szerep érvényes értékei a felhasználó által definiált szerverszerepek, valamint az alábbi fix szerver szerepek:

  • Rendszergazdavezető
  • serveradmin
  • dbcreator
  • setupadmin
  • bulkadmin
  • securityadmin
  • diskadmin
  • nyilvános
  • processadmin

'bejelentkezés'
Az SQL Server bejelentkezés neve, amit ellenőrizni kell. a bejelentkezéssysname, alapértelmezett NULL jelmel. 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 a NULL értéket adja vissza.

Megjegyzés:

Míg a Microsoft Entra bejelentkezések nyilvános előnézetben vannak Azure SQL Database és Azure Synapse számára, a Microsoft Entra fő használata bejelentkezéshez nem támogatott.

Visszatérési típusok

int

Visszaadott érték Description
0 A bejelentkezés nem a szerep tagja.

Az Azure SQL Database-ben ez az utasítás mindig 0-t ad vissza.
1 Bejelentkezés a szerep tagja.
NULLA A szerep vagy bejelentkezés nem érvényes, vagy nincs engedélyed a szerep tagságának megtekintésére.

Megjegyzések

Használd IS_SRVROLEMEMBER annak meghatározására, hogy a jelenlegi felhasználó képes végrehajtani olyan műveletet, amely a szerver szerepének jogosultságait igényli.

Ha egy Windows bejelentkezés, például Contoso\Mary5, be van jelölve a bejelentkezéshez, IS_SRVROLEMEMBERNULL-t ad vissza, kivéve, ha a bejelentkezés közvetlen hozzáférést kapott vagy megtagadták az SQL Serverhez.

Ha az opcionális bejelentkezési paraméter nincs megadva, és ha a bejelentkezés Windows domain bejelentkezés, akkor lehet egy fix szerver szerep tagja egy Windows csoport tagsága révén. Az ilyen közvetett tagságok megoldásához IS_SRVROLEMEMBER 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_SRVROLEMEMBER 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ó, az IS_SRVROLEMEMBER által visszaadott érték eltérhet az autentifikátor (például az Active Directory) SQL Server utolsó adatfrissítésétől.

Ha megadják az opcionális bejelentkezési paramétert, akkor a lekérdezés alatt álló Windows bejelentkezésnek meg kell jelennie sys.server_principals-ben, különben IS_SRVROLEMEMBER NULL-ot ad vissza. Ez azt jelzi, hogy a bejelentkezés nem érvényes.

Ha a bejelentkezési paraméter domain bejelentkezés vagy Windows csoporton alapul, és a domain vezérlő elérhetetlen, a IS_SRVROLEMEMBER-hez való hívások sikertelen lesznek, és hibás vagy hiányos adatokat adhatnak vissza.

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

IS_SRVROLEMEMBER mindig 0-t ad vissza, ha egy Windows csoportot használnak bejelentkezési argumentumként, és ez a Windows csoport egy másik Windows csoport tagja, amely viszont a megadott szerver szerep tagja.

A felhasználói fiók vezérlési (UAC) beállítása is eltérő eredményeket okozhat. 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 rendszergazdálkodó fix szerver szerepe rendelkezik a CONTROL SERVER jogosultsággal. Ha a felhasználónak van CONTROL SERVER jogosultsága, de nem tagja a szerepnek, ez a függvény helyesen jelenti, hogy a felhasználó nem tagja a rendszergazdálkodó szerepnek, még akkor is, ha a felhasználónak ugyanaz a jogosultsága van.

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

Permissions

A szerver szerepében VIEW DEFINITION engedélyt igényel.

Példák

A következő példa azt mutatja, hogy a jelenlegi felhasználó SQL Server bejelentkezése a fix szerver szerep tagja-e sysadmin .

IF IS_SRVROLEMEMBER ('sysadmin') = 1  
   print 'Current user''s login is a member of the sysadmin role'  
ELSE IF IS_SRVROLEMEMBER ('sysadmin') = 0  
   print 'Current user''s login is NOT a member of the sysadmin role'  
ELSE IF IS_SRVROLEMEMBER ('sysadmin') IS NULL  
   print 'ERROR: The server role specified is not valid.';  

Az alábbi példa azt mutatja, hogy a domain-bejelentkezési Pat tag-e a diskadmin fix szerver szerepnek.

SELECT IS_SRVROLEMEMBER('diskadmin', 'Contoso\Pat');  

Lásd még:

IS_MEMBER (Transact-SQL)
Biztonsági funkciók (Transact-SQL)