IS_MEMBER(Transact-SQL)

현재 사용자가 지정된 Microsoft Windows 그룹 또는 SQL Server 데이터베이스 역할의 멤버인지 여부를 표시합니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

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

인수

  • 'group'
    검사할 Windows 그룹의 이름으로 Domain\Group 형식이어야 합니다. group은 sysname입니다.

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

반환 형식

int

주의

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

반환 값

설명

0

현재 사용자가 group 또는 role의 멤버가 아닙니다.

1

현재 사용자가 group 또는 role의 멤버입니다.

NULL

group 또는 role이 잘못되었습니다. SQL Server 로그인 또는 응용 프로그램 역할을 사용하는 로그인에서 쿼리하는 경우 Windows 그룹에 대해 NULL을 반환합니다.

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

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

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