IS_SRVROLEMEMBER(Transact-SQL)

SQL Server 로그인이 지정된 고정 서버 역할의 멤버인지 여부를 나타냅니다.

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

구문

IS_SRVROLEMEMBER ( 'role' [ ,'login' ] )

인수

  • 'role'
    확인할 서버 역할의 이름입니다. role은 sysname입니다.

    role에 유효한 값은 다음과 같습니다.

    sysadmin

    • dbcreator

    • bulkadmin

    • diskadmin

    • processadmin

    • serveradmin

    • setupadmin

    • securityadmin

  • 'login'
    검사할 SQL Server 로그인의 이름입니다. login은 sysname이며 기본값은 NULL입니다. 값을 지정하지 않으면 현재의 실행 컨텍스트에 따른 결과를 얻게 됩니다.

반환 형식

int

주의

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

반환 값

설명

0

login은 role의 멤버가 아닙니다.

1

login은 role의 멤버입니다.

NULL

role 또는 login이 잘못되었습니다.

현재 사용자가 서버 역할의 사용 권한이 필요한 동작을 수행할 수 있는지 여부를 확인하려면 이 함수를 사용합니다.

login에 Contoso\Mary5와 같은 Windows 로그인이 지정된 경우 해당 로그인에 대해 SQL Server.에 대한 직접 액세스가 허용 또는 거부되지 않으면 IS_SRVROLEMEMBER가 NULL을 반환합니다.

선택적 로그인 매개 변수를 제공하지 않으며 로그인이 Windows 도메인 로그인인 경우 Windows 그룹 멤버 자격을 통해 고정 서버 역할의 멤버가 될 수 있습니다. 이러한 간접 멤버 자격을 확인하기 위해 IS_SRVROLEMEMBER는 도메인 컨트롤러에 Windows 그룹 멤버 자격 정보를 요청합니다. 도메인 컨트롤러에 액세스할 수 없거나 도메인 컨트롤러가 응답하지 않으면 IS_SRVROLEMEMBER가 사용자 및 사용자의 로컬 그룹만 고려한 멤버 자격 정보를 반환합니다. 지정된 사용자가 현재 사용자가 아닌 경우 IS_SRVROLEMEMBER가 반환하는 값이 인증자(예: Active Directory)의 마지막 SQL Server 데이터 새로 고침과 다를 수 있습니다.

선택적 로그인 매개 변수를 제공하는 경우 쿼리 중인 Windows 로그인이 sys.server_principals에 있어야 하며, 그렇지 않으면 IS_SRVROLEMEMBER가 NULL을 반환합니다. 이것은 올바른 로그인이 아님을 나타냅니다.

로그인 매개 변수가 도메인 로그인이거나 Windows 그룹을 기반으로 하고 도메인 컨트롤러에 액세스할 수 없는 경우 IS_SRVROLEMEMBER 호출이 실패하고 올바르지 않거나 불완전한 데이터가 반환될 수 있습니다.

도메인 컨트롤러를 사용할 수 없으면 IS_SRVROLEMEMBER 호출은 로컬 Windows 계정 또는 SQL Server 로그인과 같이 Windows 사용자를 로컬로 인증할 수 있는 경우 정확한 정보를 반환합니다.

Windows Vista 및 Windows Server 2008의 UAC(사용자 계정 컨트롤)도 다른 결과를 반환할 수 있습니다. 이는 사용자가 Windows 그룹 멤버 또는 특정 SQL Server 사용자 중 어떤 자격으로 서버에 액세스했는지에 따라 다릅니다. 사용자 계정 컨트롤에 대한 자세한 내용은 방법: Windows Vista에서 SQL Server에 연결을 참조하십시오.

이 함수는 기본 사용 권한이 아닌 역할 멤버 자격을 평가합니다. 예를 들어 sysadmin 고정 서버 역할은 CONTROL SERVER 사용 권한을 가집니다. CONTROL SERVER 사용 권한을 가진 사용자가 역할의 멤버는 아닌 경우 이 함수는 사용자에게 동일한 사용 권한이 있더라도 사용자가 sysadmin 역할의 멤버가 아님을 올바르게 보고합니다.

다음 예에서는 현재 사용자의 SQL Server 로그인이 sysadmin 고정 서버 역할의 멤버인지 여부를 확인합니다.

IF IS_SRVROLEMEMBER ('sysadmin') = 1
   print 'Current user''s login is a member of the sysadmin role'
ELSE IF IS_SRVROLEMEMBER ('sysadmin') = 0
   print 'Current user''s login is NOT a member of the sysadmin role'
ELSE IF IS_SRVROLEMEMBER ('sysadmin') IS NULL
   print 'ERROR: The server role specified is not valid.'