IS_SRVROLEMEMBER(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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

Transact-SQL 구문 표기 규칙

Syntax

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

참고 항목

SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.

인수

'role'
확인할 서버 역할의 이름입니다. rolesysname입니다.

role의 유효한 값은 사용자 정의 서버 역할이며 다음 고정 서버 역할입니다.

  • sysadmin
  • serveradmin
  • dbcreator
  • setupadmin
  • bulkadmin
  • securityadmin
  • diskadmin
  • 공공
  • processadmin

'login'
확인할 SQL Server 로그인의 이름입니다. loginsysname이며 기본값은 NULL입니다. 값을 지정하지 않으면 현재의 실행 컨텍스트에 따른 결과를 얻게 됩니다. 매개 변수에 NULL이라는 단어가 포함되어 있으면 NULL이 반환됩니다.

참고 항목

Microsoft Entra 로그인은 Azure SQL Database 및 Azure Synapse에 대한 공개 미리 보기에 있지만 로그인Microsoft Entra 보안 주체를 사용하는 것은 지원되지 않습니다.

반환 형식

int

반환 값 설명
0 로그인은 역할멤버가 아닙니다.

Azure SQL Database에서 이 문은 항상 0을 반환합니다.
1 loginrole의 구성원입니다.
NULL 역할 또는 로그인 이 유효하지 않거나 역할 멤버 자격을 볼 수 있는 권한이 없습니다.

설명

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

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

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

선택적 로그인 매개 변수가 제공되면 쿼리 중인 Windows 로그인이 sys.server_principals 있거나 IS_SRVROLEMEMBER NULL을 반환해야 합니다. 이는 로그인이 유효하지 않음을 나타냅니다.

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

do기본 컨트롤러를 사용할 수 없는 경우 IS_SRVROLEMEMBER 호출은 Windows 보안 주체를 로컬로 인증할 수 있는 경우(예: 로컬 Windows 계정 또는 SQL Server 로그인) 정확한 정보를 반환합니다.

Windows 그룹이 로그인 인수로 사용되는 경우 IS_SRVROLEMEMBER는 항상 0을 반환하며, 이 Windows 그룹은 지정된 서버 역할의 멤버인 또 다른 Windows 그룹의 멤버입니다.

사용자 계정 컨트롤(UAC) 설정도 다른 결과가 반환되는 원인이 될 수 있습니다. 이는 사용자가 Windows 그룹 멤버 또는 특정 SQL Server 사용자 중 어떤 자격으로 서버에 액세스했는지에 따라 다릅니다.

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

현재 사용자가 지정된 Windows 그룹, Microsoft Entra 그룹 또는 SQL Server 데이터베이스 역할의 구성원인지 확인하려면 IS_MEMBER(Transact-SQL)를 사용합니다. SQL Server 로그인이 데이터베이스 역할의 멤버인지 여부를 확인하려면 IS_ROLEMEMBER(Transact-SQL)를 사용합니다.

사용 권한

서버 역할에 대한 VIEW DEFINITION 권한이 필요합니다.

예제

다음 예에서는 현재 사용자의 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.';  

다음 예에서는 도메인 로그인 Pat가 diskadmin 고정 서버 역할의 멤버인지 여부를 보여 줍니다.

SELECT IS_SRVROLEMEMBER('diskadmin', 'Contoso\Pat');  

참고 항목

IS_MEMBER(Transact-SQL)
보안 함수(Transact-SQL)