Sdílet prostřednictvím


IS_SRVROLEMEMBER (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Označuje, zda je přihlášení k SQL Serveru členem určené role serveru.

Transact-SQL konvence syntaxe

Syntaxe

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

Arguments

'role'
Je název role serveru, která je kontrolována. Role je Sysname.

Platné hodnoty pro roli jsou uživatelem definované serverové role a následující pevné serverové role:

  • Sysadmin
  • serveradmin
  • dbcreator
  • setupadmin
  • Bulkadmin
  • securityadmin
  • diskadmin
  • veřejný
  • processadmin

'logování'
Je to název přihlášení k SQL Serveru, který je potřeba zkontrolovat. přihlášení je sysname, s výchozím nastavením NULL. Pokud není uvedena žádná hodnota, výsledek je založen na aktuálním kontextu vykonání. Pokud parametr obsahuje slovo NULL, vrátí NULL.

Poznámka:

Zatímco přihlášení Microsoft Entra jsou ve veřejném náhledu pro Azure SQL Database a Azure Synapse, použití principu Microsoft Entra pro přihlášení není podporováno.

Návratové typy

int

Návratová hodnota Description
0 Přihlášení není členem role.

V Azure SQL Database tento příkaz vždy vrací 0.
1 Přihlášení je členem role.
NULA Role nebo přihlášení není platné, nebo nemáte oprávnění zobrazit členství v roli.

Poznámky

Použijte IS_SRVROLEMEMBER k ověření, zda může současný uživatel provést akci vyžadující oprávnění role serveru.

Pokud je pro přihlášení určeno přihlášení pro Windows, například Contoso\Mary5, IS_SRVROLEMEMBER vrátí NULL, pokud přihlášení nebylo uděleno nebo zamítnuto přímý přístup k SQL Serveru.

Pokud není k dispozici volitelný přihlašovací parametr a pokud je přihlášení do domény Windows, může být členem pevné role serveru prostřednictvím členství ve skupině Windows. Pro vyřešení takových nepřímých členství IS_SRVROLEMEMBER 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_SRVROLEMEMBER vrátí informace o členství v roli tím, že zohlední pouze uživatele a jeho lokální skupiny. Pokud uživatel uvedený není aktuálním uživatelem, hodnota vrácená IS_SRVROLEMEMBER se může lišit od poslední aktualizace dat autentizátoru (například Active Directory) pro SQL Server.

Pokud je k dispozici volitelný přihlašovací parametr, musí být dotazované přihlášení do Windows přítomno v sys.server_principals, jinak IS_SRVROLEMEMBER vrátí NULL. To naznačuje, že přihlášení není platné.

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

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

IS_SRVROLEMEMBER vždy vrací 0, když je jako přihlašovací argument použita skupina Windows, a tato Windows skupina je členem jiné Windows skupiny, která je zase členem určené role serveru.

Nastavení User Account Control (UAC) může také způsobit různé 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 pevného správce systému má oprávnění CONTROL SERVER . Pokud má uživatel oprávnění CONTROL SERVER , ale není členem role, tato funkce správně nahlásí, že uživatel není členem role správce systému , i když má stejná oprávnění.

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 Server členem databázové role, použijte IS_ROLEMEMBER (Transact-SQL).

Povolení

Vyžaduje povolení ZOBRAZIT DEFINICI na roli serveru.

Examples

Následující příklad ukazuje, zda je přihlášení pro SQL Server pro aktuálního uživatele členem sysadmin role pevného serveru.

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

Následující příklad ukazuje, zda je doménový přihlášení Pat členem role diskadmina na pevném serveru.

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

Viz také

IS_MEMBER (Transact-SQL)
Funkce zabezpečení (Transact-SQL)