Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-databas i Microsoft Fabric
Anger om den nuvarande användaren är medlem i den specificerade Microsoft Windows-gruppen, Microsoft Entra-gruppen eller SQL Server-databasrollen.
Funktionen IS_MEMBER stöds för Microsoft Entra-grupper. Det enda fallet där IS_MEMBER inte fungerar är om gruppen är Microsoft Entra-administratör för SQL-instansen.
Transact-SQL syntaxkonventioner
Anmärkning
Microsoft Entra-ID kallades tidigare Azure Active Directory (Azure AD).
Syntax
IS_MEMBER ( { 'group' | 'role' } )
Arguments
'grupp'
Gäller för: SQL Server 2008 (10.0.x) och senare
Är namnet på Windows- eller Microsoft Entra-gruppen som kontrolleras. En Windows-grupp måste vara i formatet Domain\Group. Group är sysname.
'roll'
Är namnet på SQL Server-rollen som kontrolleras.
Rollen är Sysname och kan inkludera databasens fasta roller eller användardefinierade roller, men inte serverroller.
Returtyper
int
Anmärkningar
IS_MEMBER returnerar följande värden.
| Returvärde | Description |
|---|---|
| 0 | Nuvarande användare är inte medlem i gruppen eller rollen. |
| 1 | Nuvarande användare är medlem i en grupp eller roll. |
| NOLL | Varken grupp eller roll är ogiltigt. När den förfrågas av en SQL Server-inloggning eller en inloggning med en applikationsroll, returneras NULL för en Windows-grupp. |
IS_MEMBER bestämmer medlemskap i Windows-gruppen genom att undersöka en åtkomsttoken som skapats av Windows. Åtkomsttoken speglar inte förändringar i gruppmedlemskap som görs efter att en användare ansluter till en instans av SQL Server. Medlemskap i Windows-gruppen kan inte befrågas via en SQL Server-inloggning eller en SQL Server-applikationsroll.
För att lägga till och ta bort medlemmar från en databasroll, använd ALTER ROLE (Transact-SQL). För att lägga till och ta bort medlemmar från en serverroll, använd ALTER SERVER ROLE (Transact-SQL).
Denna funktion utvärderar rollmedlemskap, inte den underliggande behörigheten. Till exempel har den db_owner fasta databasrollen behörigheten CONTROL DATABASE . Om användaren har behörigheten CONTROL DATABASE men inte är medlem i rollen, rapporterar denna funktion korrekt att användaren inte är medlem i db_owner roll, även om användaren har samma behörigheter.
Medlemmar i sysadmin-fasta serverrollen anger varje databas som dbo-användare . Att kontrollera behörighet för medlem i sysadmin-funktionen fixade serverrollen, kontrollerar behörigheter för dbo, inte för den ursprungliga inloggningen. Eftersom dbo inte kan läggas till i en databasroll och inte finns i Windows-grupper, returnerar dbo alltid 0 (eller NULL om rollen inte finns).
Relaterade funktioner
För att avgöra om en annan SQL Server-inloggning är medlem i en databasroll, använd IS_ROLEMEMBER (Transact-SQL). För att avgöra om en SQL Server-inloggning är medlem i en serverroll, använd IS_SRVROLEMEMBER (Transact-SQL).
Examples
Följande exempel kontrollerar om den nuvarande användaren är medlem i en databasroll eller en Windows-domängrupp.
-- 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
Se även
IS_SRVROLEMEMBER (Transact-SQL)
huvudnamn (databasmotor)
Säkerhetskatalogvyer (Transact-SQL)
Säkerhetsfunktioner (Transact-SQL)