다음을 통해 공유


IS_MEMBER(Transact-SQL)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

현재 사용자가 지정된 Microsoft Windows 그룹, Microsoft Entra 그룹 또는 SQL Server 데이터베이스 역할의 구성원인지 여부를 나타냅니다.

IS_MEMBER 함수는 Microsoft Entra 그룹에 대해 지원됩니다. IS_MEMBER 작동하지 않는 한 가지 사례는 그룹이 SQL 인스턴스의 Microsoft Entra 관리자인 경우입니다.

Transact-SQL 구문 표기 규칙

참고 항목

Microsoft Entra ID는 이전의 Azure AD(Azure Active Directory)입니다.

구문

IS_MEMBER ( { 'group' | 'role' } )  

인수

' group '
적용 대상: SQL Server 2008(10.0.x) 이상

확인 중인 Windows 또는 Microsoft Entra 그룹의 이름입니다. Windows 그룹은 도메인\그룹 형식이어야 합니다. 그룹sysname입니다.

' role '
확인할 SQL Server 역할의 이름입니다. 역할sysname이며 데이터베이스 고정 역할이나 사용자 정의 역할은 포함할 수 있으나 서버 역할은 포함할 수 없습니다.

반환 형식

int

설명

IS_MEMBER는 다음과 같은 값을 반환합니다.

반환 값 설명
0 현재 사용자는 그룹 또는 역할멤버가 아닙니다.
1 현재 사용자가 그룹 또는 역할의 멤버입니다.
NULL 그룹 또는 역할이 올바르지 않습니다. SQL Server 로그인 또는 애플리케이션 역할을 사용하는 로그인에서 쿼리하는 경우 Windows 그룹에 대해 NULL을 반환합니다.

IS_MEMBER는 Windows에서 만든 액세스 토큰을 검사하여 Windows 그룹 멤버를 결정합니다. 액세스 토큰은 사용자가 SQL Server 인스턴스에 연결한 후 변경된 그룹 멤버 자격을 반영하지 않습니다. WINDOWS 그룹 멤버 자격은 SQL Server 로그인 또는 SQL Server 애플리케이션 역할에서 쿼리할 수 없습니다.

데이터베이스 역할에서 멤버를 추가하고 제거하려면 ALTER ROLE(Transact-SQL)를 사용합니다. 모든 서버 역할에서 멤버를 추가하고 제거하려면 ALTER SERVER ROLE(Transact-SQL)를 사용합니다.

이 함수는 기본 사용 권한이 아니라 역할 멤버 자격을 평가합니다. 예를 들어 db_owner 고정 데이터베이스 역할에는 CONTROL DATABASE 권한이 있습니다. 사용자에게 CONTROL DATABASE 권한이 있지만 역할의 멤버가 아닌 경우 이 함수는 사용자에게 동일한 사용 권한이 있더라도 사용자가 db_owner 역할의 멤버가 아니라는 것을 올바르게 보고합니다.

sysadmin 고정 서버 역할의 멤버는 모든 데이터베이스를 dbo 사용자로 입력합니다. sysadmin 고정 서버 역할의 멤버에 대한 사용 권한을 확인하려면 원래의 로그인이 아닌 dbo에 대한 사용 권한을 확인합니다. dbo는 데이터베이스 역할에 추가할 수 없고 Windows 그룹에 존재하지 않으므로 dbo는 항상 0(또는 역할이 없는 경우 NULL)을 반환합니다.

다른 SQL Server 로그인이 데이터베이스 역할의 멤버인지 여부를 확인하려면 IS_ROLEMEMBER(Transact-SQL)를 사용합니다. SQL Server 로그인이 서버 역할의 멤버인지 여부를 확인하려면 IS_SRVROLEMEMBER(Transact-SQL)를 사용합니다.

다음 예에서는 현재 사용자가 데이터베이스 역할 또는 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  

참고 항목

IS_SRVROLEMEMBER(Transact-SQL)
보안 주체(데이터베이스 엔진)
보안 카탈로그 뷰(Transact-SQL)
보안 함수(Transact-SQL)