Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
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)