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 aktualny użytkownik należy do określonej grupy Microsoft Windows, grupy Microsoft Entra lub roli bazy SQL Server.
Funkcja IS_MEMBER jest obsługiwana dla grup Microsoft Entra. Jedynym przypadkiem, gdy IS_MEMBER nie działa, jest sytuacja, gdy grupa jest administratorem Microsoft Entra dla instancji SQL.
Transact-SQL konwencje składni
Uwaga / Notatka
Microsoft Entra ID był wcześniej znany jako Azure Active Directory (Azure AD).
Składnia
IS_MEMBER ( { 'group' | 'role' } )
Arguments
'grupa'
Dotyczy do: SQL Server 2008 (10.0.x) i nowszych
To nazwa grupy Windows lub Microsoft Entra, która jest sprawdzana. Grupa Windows musi mieć format Domain Group\. grupa to sysname.
'rola'
To nazwa roli SQL Server, która jest sprawdzana.
Rola to sysname i może obejmować stałe role bazy danych lub role zdefiniowane przez użytkownika, ale nie role serwera.
Typy zwracane
int
Uwagi
IS_MEMBER zwraca następujące wartości.
| Wartość zwracana | Description |
|---|---|
| 0 | Obecny użytkownik nie jest członkiem grupy ani roli. |
| 1 | Obecny użytkownik to członek grupy lub rola. |
| ZERO | Ani grupa, ani rola nie są ważne. Po zapytaniu przez logowanie SQL Server lub logowanie za pomocą roli aplikacji, zwraca NULL dla grupy Windows. |
IS_MEMBER określa członkostwo w grupie Windows, analizując token dostępu utworzony przez Windows. Token dostępu nie odzwierciedla zmian w członkostwie grupy, które następują po połączeniu użytkownika z instancją SQL Server. Członkostwo w grupie Windows nie może być zapytaniami z logowania SQL Server ani roli aplikacji SQL Server.
Aby dodawać i usuwać członków z roli bazy danych, użyj ALTER ROLE (Transact-SQL). Aby dodać i usunąć członków z roli serwera, użyj ALTER SERVER ROLE (Transact-SQL).
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, funkcja ta poprawnie raportuje, że użytkownik nie jest członkiem roli db_owner , 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 inny logowanie SQL Server jest członkiem roli bazy danych, użyj IS_ROLEMEMBER (Transact-SQL). Aby sprawdzić, czy logowanie SQL Server jest członkiem roli serwera, użyj IS_SRVROLEMEMBER (Transact-SQL).
Przykłady
Poniższy przykład sprawdza, czy aktualny użytkownik należy do roli bazy danych, czy do grupy domenowej Windows.
-- Test membership in db_owner and print appropriate message.
IF IS_MEMBER ('db_owner') = 1
PRINT 'Current user is a member of the db_owner role'
ELSE IF IS_MEMBER ('db_owner') = 0
PRINT 'Current user is NOT a member of the db_owner role'
ELSE IF IS_MEMBER ('db_owner') IS NULL
PRINT 'ERROR: Invalid group / role specified';
GO
-- Execute SELECT if user is a member of ADVWORKS\Shipping.
IF IS_MEMBER ('ADVWORKS\Shipping') = 1
SELECT 'User ' + USER + ' is a member of ADVWORKS\Shipping.';
GO
Zobacz też
IS_SRVROLEMEMBER (Transact-SQL)
Podmioty (aparat bazy danych)
Widoki wykazu zabezpieczeń (Transact-SQL)
Funkcje zabezpieczeń (Transact-SQL)