Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w usłudze Microsoft Fabric
Wskazuje, czy logowanie SQL Server jest członkiem określonej roli serwera.
Transact-SQL konwencje składni
Składnia
IS_SRVROLEMEMBER ( 'role' [ , 'login' ] )
Arguments
'rola'
To nazwa roli serwera, która jest sprawdzana.
Rola to sysname.
Poprawne wartości roli to role serwera zdefiniowane przez użytkownika oraz następujące stałe role serwera:
- Administrator systemów
- serweradministrator
- dbcreator
- setupadmin
- Bulkadmin
- securityadmin
- Diskadmin
- publiczny
- Processadmin
'logowanie'
To nazwa logowania do SQL Server, którą trzeba sprawdzić.
login to sysname, z domyślnym NULL. Jeśli nie podano wartości, wynik opiera się na bieżącym kontekście Wykonania. Jeśli parametr zawiera słowo NULL, zwraca NULL.
Uwaga / Notatka
Chociaż logowania Microsoft Entra są dostępne w publicznym podglądzie dla Azure SQL Database i Azure Synapse, nie jest obsługiwane użycie zasady Microsoft Entra do logowania .
Typy zwracane
int
| Wartość zwracana | Description |
|---|---|
| 0 |
Login nie jest członkiem role. W bazie danych Azure SQL to zdanie zawsze zwraca 0. |
| 1 | Login jest członkiem Role. |
| ZERO | Rola lub login nie jest ważny albo nie masz zgody na przeglądanie członkostwa w roli. |
Uwagi
Użyj IS_SRVROLEMEMBER, aby sprawdzić, czy obecny użytkownik może wykonać działanie wymagające uprawnień roli serwera.
Jeśli logowanie Windows, takie jak Contoso\Mary5, jest określone jako logowanie, IS_SRVROLEMEMBER zwraca NULL, chyba że logowanie zostało przyznane lub odrzucone bezpośredniego dostępu do SQL Server.
Jeśli opcjonalny parametr logowania nie jest dostępny, a logowanie dotyczy domeny Windows, może to być członek stałej roli serwera poprzez członkostwo w grupie Windows. Aby rozwiązać takie pośrednie członkostwa, IS_SRVROLEMEMBER żąda od kontrolera domeny informacji o członkostwie w grupie Windows. Jeśli kontroler domeny jest niedostępny lub nie odpowiada, IS_SRVROLEMEMBER zwraca informacje o przynależności do ról, uwzględniając tylko użytkownika i jego lokalne grupy. Jeśli użytkownik nie jest aktualnym, wartość zwracana przez IS_SRVROLEMEMBER może różnić się od ostatniej aktualizacji danych autora (np. Active Directory) do SQL Server.
Jeśli opcjonalny parametr logowania jest dostępny, logowanie Windows, które jest zapytania, musi być obecne w sys.server_principals, inaczej IS_SRVROLEMEMBER zwraca NULL. To oznacza, że logowanie nie jest ważne.
Gdy parametr logowania jest domeną lub opartą na grupie Windows, a kontroler domeny jest niedostępny, wywołania IS_SRVROLEMEMBER zawiodą i mogą zwracać nieprawidłowe lub niepełne dane.
Jeśli kontroler domeny nie jest dostępny, wywołanie IS_SRVROLEMEMBER zwraca dokładne informacje, gdy zasada Windows może być uwierzytelniona lokalnie, na przykład przez lokalne konto Windows lub logowanie SQL Server.
IS_SRVROLEMEMBER zawsze zwraca 0, gdy grupa Windows jest używana jako argument logowania, a ta grupa Windows jest członkiem innej grupy Windows, która z kolei jest członkiem określonej roli serwera.
Ustawienie User Account Control (UAC) może również powodować różne wyniki. Zależałoby to od tego, czy użytkownik uzyskiwał dostęp do serwera jako członek grupy Windows, czy jako konkretny użytkownik SQL Server.
Ta funkcja ocenia przynależność do roli, a nie podstawowe uprawnienia. Na przykład rola administratora systemu stałego serwera ma uprawnienia CONTROL SERVER . Jeśli użytkownik ma uprawnienia CONTROL SERVER , ale nie jest członkiem roli, ta funkcja poprawnie zgłosi, że użytkownik nie jest członkiem roli administratora systemu , mimo że użytkownik ma te same uprawnienia.
Powiązane funkcje
Aby ustalić, czy obecny użytkownik należy do określonej grupy Windows, grupy Microsoft Entra czy roli bazy danych SQL Server, użyj IS_MEMBER (Transact-SQL). Aby określić, czy logowanie SQL Server jest członkiem roli bazy danych, użyj IS_ROLEMEMBER (Transact-SQL).
Permissions
Wymaga uprawnień VIEW DEFINITION na rolę serwera.
Przykłady
Poniższy przykład wskazuje, czy logowanie SQL Server dla obecnego użytkownika należy do sysadmin roli stałego serwera.
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.';
Poniższy przykład wskazuje, czy domena logowania Pat jest członkiem roli diskadmina na stałym serwerze.
SELECT IS_SRVROLEMEMBER('diskadmin', 'Contoso\Pat');
Zobacz też
IS_MEMBER (Transact-SQL)
Funkcje zabezpieczeń (Transact-SQL)