IS_SRVROLEMEMBER(Transact-SQL)
SQL Server 로그인이 지정된 고정 서버 역할의 멤버인지 여부를 나타냅니다.
구문
IS_SRVROLEMEMBER ( 'role' [ , 'login' ] )
인수
'role'
확인할 서버 역할의 이름입니다. role은 sysname입니다.role에 유효한 값은 다음과 같습니다.
sysadmin
dbcreator
bulkadmin
diskadmin
processadmin
serveradmin
setupadmin
securityadmin
'login'
확인할 SQL Server 로그인의 이름입니다. login은 sysname이며 기본값은 NULL입니다. 값을 지정하지 않으면 현재의 실행 컨텍스트에 따른 결과를 얻게 됩니다. NULL 단어를 포함하면 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 사용자를 로컬로 인증할 수 있는 경우 정확한 정보를 반환합니다.
IS_SRVROLEMEMBER는 Windows group이 로그인 인수로 사용되고 이 Windows 그룹이 지정된 서버 역할의 멤버인 다른 Windows 그룹의 멤버인 경우 항상 0을 반환합니다.
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.'