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
SQL databáze v Microsoft Fabric
Označuje, zda je přihlášení k SQL Serveru členem určené role serveru.
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í.
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 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');