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
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Database w Microsoft Fabric
Wskazuje, czy określony princip bazy danych należy do określonej roli bazy danych.
Transact-SQL konwencje składni
Uwaga / Notatka
Microsoft Entra ID był wcześniej znany jako Azure Active Directory (Azure AD).
Składnia
IS_ROLEMEMBER ( 'role' [ , 'database_principal' ] )
Arguments
'rola'
To nazwa roli bazy danych, która jest sprawdzana.
Rola to sysname.
'database_principal'
To nazwa użytkownika bazy danych, rola bazy danych lub rola aplikacji do sprawdzenia.
database_principal to nazwa systemu, z domyślnym NULL. Jeśli nie podano wartości, wynik opiera się na bieżącym kontekście wykonywania. Jeśli parametr zawiera słowo NULL, zwróci NULL.
Typy zwracane
int
| Wartość zwracana | Description |
|---|---|
| 0 | database_principal nie jest członkiem roli. |
| 1 | database_principal jest członkiem roli. |
| ZERO | database_principallub rola nie jest ważna albo nie masz zgody na przeglądanie członkostwa w roli. |
Uwagi
Funkcja IS_ROLEMEMBER nie jest obsługiwana przez administratora Microsoft Entra, gdy jest on członkiem grupy Microsoft Entra. Funkcja IS_ROLEMEMBER jest obsługiwana dla użytkowników Microsoft Entra, którzy są członkami grupy Microsoft Entra, chyba że tą grupą jest administrator Microsoft Entra.
Użyj IS_ROLEMEMBER, aby sprawdzić, czy obecny użytkownik może wykonać działanie wymagające uprawnień roli bazy danych.
Jeśli database_principal opiera się na logowaniu Windows, takim jak Contoso\Mary5, IS_ROLEMEMBER zwraca NULL, chyba że database_principal uzyskał lub odmówił bezpośredniego dostępu do SQL Server.
Jeśli opcjonalny parametr database_principal nie jest dostępny, a database_principal opiera się na logowaniu do domeny Windows, może być członkiem roli bazy danych poprzez członkostwo w grupie Windows. Aby rozwiązać takie pośrednie członkostwa, IS_ROLEMEMBER żąda od kontrolera domeny informacji o członkostwie w grupie Windows. Jeśli kontroler domeny jest niedostępny lub nie reaguje, IS_ROLEMEMBER 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_ROLEMEMBER może różnić się od ostatniej aktualizacji danych autora (np. Active Directory) do SQL Server.
Jeśli opcjonalny parametr database_principal jest podany, użytkownik musi istnieć w sys.database_principals, inaczej IS_ROLEMEMBER zwraca NULL.
Gdy parametr database_principal opiera się na logowaniu do domeny lub grupie Windows, a kontroler domeny jest niedostępny, wywołania IS_ROLEMEMBER zawiodą i mogą zwracać nieprawidłowe lub niepełne dane.
Jeśli kontroler domeny nie jest dostępny, wywołanie IS_ROLEMEMBER zwraca dokładne informacje, gdy zasada Windows może być uwierzytelniona lokalnie, na przykład lokalne konto Windows lub logowanie SQL Server.
IS_ROLEMEMBER zawsze zwraca 0, gdy grupa Windows jest używana jako główny argument bazy danych, a ta grupa Windows jest członkiem innej grupy Windows, która z kolei jest członkiem określonej roli bazy danych.
Kontrola konta użytkownika (UAC) dostępna w Windows Vista i Windows Server 2008 może również dawać inne 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 db_owner stałej bazy danych ma uprawnienia CONTROL DATABASE . Jeśli użytkownik ma uprawnienia CONTROL DATABASE , ale nie jest członkiem roli, ta funkcja poprawnie zgłosi, że użytkownik nie jest członkiem db_owner roli, mimo że użytkownik ma te same uprawnienia.
Członkowie roli stałego administratora systemu wpisują każdą bazę danych jako użytkownik DBO . Sprawdzanie uprawnień dla członka stałej roli administratora systemu sprawdza uprawnienia dla DBO, a nie oryginalnego logowania. Ponieważ dbo nie może być dodane do roli bazy danych i nie istnieje w grupach Windows, dbo zawsze zwraca 0 (lub NULL, jeśli rola nie istnieje).
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 sprawdzić, czy logowanie SQL Server jest członkiem roli serwera, użyj IS_SRVROLEMEMBER (Transact-SQL).
Permissions
Wymaga uprawnień VIEW DEFINITION w roli bazy danych.
Przykłady
Poniższy przykład wskazuje, czy aktualny użytkownik należy do stałej roli bazy db_datareader danych.
IF IS_ROLEMEMBER ('db_datareader') = 1
print 'Current user is a member of the db_datareader role'
ELSE IF IS_ROLEMEMBER ('db_datareader') = 0
print 'Current user is NOT a member of the db_datareader role'
ELSE IF IS_ROLEMEMBER ('db_datareader') IS NULL
print 'ERROR: The database role specified is not valid.';
Zobacz też
UTWÓRZ ROLĘ (Transact-SQL)
ROLA ALTERA (Transact-SQL)
ROLA ODRZUCENIA (Transact-SQL)
CREATE SERVER ROLE (Transact-SQL)
ROLA ALTER SERVERA (Transact-SQL)
ROLA SERWERA (Transact-SQL)
IS_MEMBER (Transact-SQL)
IS_SRVROLEMEMBER (Transact-SQL)
Funkcje zabezpieczeń (Transact-SQL)