IS_SRVROLEMEMBER(Transact-SQL)IS_SRVROLEMEMBER (Transact-SQL)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)예Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server 로그인이 지정된 서버 역할의 멤버인지 여부를 나타냅니다.Indicates whether a SQL ServerSQL Server login is a member of the specified server role.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax


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

인수Arguments

' 역할 '' role '
확인할 서버 역할의 이름입니다.Is the name of the server role that is being checked. 역할sysname합니다.role is sysname.

유효한 값에 대 한 역할 는 사용자 정의 서버 역할 및 다음 고정 서버 역할:Valid values for role are user-defined server roles, and the following fixed server roles:

sysadminsysadmin serveradminserveradmin
dbcreatordbcreator setupadminsetupadmin
bulkadminbulkadmin securityadminsecurityadmin
diskadmindiskadmin 적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

publicpublic
processadminprocessadmin

' 로그인 '' login '
이름인는 SQL ServerSQL Server 검사할 로그인 합니다.Is the name of the SQL ServerSQL Server login to check. 로그인sysname, 기본값은 NULL입니다.login is sysname, with a default of NULL. 값을 지정하지 않으면 현재의 실행 컨텍스트에 따른 결과를 얻게 됩니다.If no value is specified, the result is based on the current Execution context. 매개 변수에 NULL이라는 단어가 포함되어 있으면 NULL이 반환됩니다.If the parameter contains the word NULL will return NULL.

반환 형식Return Types

intint

반환 값Return value DescriptionDescription
00 로그인 의 구성원이 아니므로 역할합니다.login is not a member of role.

Azure SQL 데이터베이스Azure SQL Database,이 문은 항상 0을 반환 합니다.In Azure SQL 데이터베이스Azure SQL Database, this statement always returns 0.
1.1 로그인 의 멤버인 역할합니다.login is a member of role.
NULLNULL 역할 또는 로그인 유효 하지 않거나 역할 멤버 자격을 볼 수 있는 권한이 없습니다.role or login is not valid, or you do not have permission to view the role membership.

주의Remarks

현재 사용자가 서버 역할의 사용 권한이 필요한 동작을 수행할 수 있는지 여부를 확인 하려면 UseIS_SRVROLEMEMBER 합니다.UseIS_SRVROLEMEMBER to determine whether the current user can perform an action requiring the server role's permissions.

Contoso\Mary5, 등으로 Windows 로그인에 대 한 지정 된 경우 로그인, IS_SRVROLEMEMBER 반환 NULL로그인에 부여 되었거나 거부에 대 한 직접 액세스 하지 않는 한, SQL ServerSQL Server.If a Windows login, such as Contoso\Mary5, is specified for login, IS_SRVROLEMEMBER returns NULL, unless the login has been granted or denied direct access to SQL ServerSQL Server.

경우 선택적 로그인 매개 변수가 제공 되지 않고 경우 로그인 Windows 도메인 로그인, Windows 그룹의 멤버 자격을 통해 고정된 서버 역할의 멤버 수 있습니다.If the optional login parameter is not provided and if login is a Windows domain login, it may be a member of a fixed server role through membership in a Windows group. 이러한 간접 멤버 자격을 확인하기 위해 IS_SRVROLEMEMBER는 도메인 컨트롤러에 Windows 그룹 멤버 자격 정보를 요청합니다.To resolve such indirect memberships, IS_SRVROLEMEMBER requests Windows group membership information from the domain controller. 도메인 컨트롤러를 액세스할 수 없거나 응답 하지 않으면 경우 IS_SRVROLEMEMBER 사용자 및의 로컬 그룹만 고려 하 여 역할 멤버 자격 정보를 반환 합니다.If the domain controller is inaccessible or does not respond, IS_SRVROLEMEMBER returns role membership information by accounting for the user and its local groups only. 지정된 사용자가 현재 사용자가 아닌 경우 IS_SRVROLEMEMBER가 반환하는 값이 인증자(예: Active Directory)의 마지막 SQL ServerSQL Server 데이터 업데이트와 다를 수 있습니다.If the user specified is not the current user, the value returned by IS_SRVROLEMEMBER might differ from the authenticator's (such as Active Directory) last data update to SQL ServerSQL Server.

선택적 로그인 매개 변수를 제공하지 않으면 쿼리 중인 Windows 로그인이 sys.server_principals에 있어야 하거나 IS_SRVROLEMEMBER가 NULL을 반환합니다.If the optional login parameter is provided, the Windows login that is being queried must be present in sys.server_principals, or IS_SRVROLEMEMBER will return NULL. 이것은 올바른 로그인이 아님을 나타냅니다.This indicates that the login is not valid.

로그인 매개 변수가 도메인 로그인이거나 Windows 그룹을 기반으로 하고 도메인 컨트롤러에 액세스할 수 없는 경우 IS_SRVROLEMEMBER 호출이 실패하고 올바르지 않거나 불완전한 데이터가 반환될 수 있습니다.When the login parameter is a domain login or based on a Windows group and the domain controller is inaccessible, calls to IS_SRVROLEMEMBER will fail and might return incorrect or incomplete data.

도메인 컨트롤러를 사용할 수 없으면 IS_SRVROLEMEMBER 호출은 로컬 Windows 계정 또는 SQL ServerSQL Server 로그인과 같이 Windows 사용자를 로컬로 인증할 수 있는 경우 정확한 정보를 반환합니다.If the domain controller is not available, the call to IS_SRVROLEMEMBER will return accurate information when the Windows principle can be authenticated locally, such as a local Windows account or a SQL ServerSQL Server login.

IS_SRVROLEMEMBER Windows 그룹이 로그인 인수로 사용 되 고이 Windows 그룹에 지정된 된 서버 역할의 멤버 차례로 이며 다른 Windows 그룹의 구성원은 항상 0을 반환 합니다.IS_SRVROLEMEMBER always returns 0 when a Windows group is used as the login argument, and this Windows group is a member of another Windows group which is, in turn, a member of the specified server role.

사용자 계정 컨트롤 (UAC) 설정을 않을 수 있습니다 다른 결과 반환 합니다.The User Account Control (UAC) setting might also cause the return different results. 이는 사용자가 Windows 그룹 멤버 또는 특정 SQL ServerSQL Server 사용자 중 어떤 자격으로 서버에 액세스했는지에 따라 다릅니다.This would depend on whether the user accessed the server as a Windows group member or as a specific SQL ServerSQL Server user.

이 함수는 기본 사용 권한이 아니라 역할 멤버 자격을 평가합니다.This function evaluates role membership, not the underlying permission. 예를 들어는 sysadmin 고정된 서버 역할에는 제어 서버 권한.For example, the sysadmin fixed server role has the CONTROL SERVER permission. 사용자에 게 있으면는 제어 서버 권한에 포함 있지만 역할의 멤버는 아닌 경우이 함수는 잘못 보고 하 여 사용자의 구성원이 아닙니다는 sysadmin 역할을 사용자에 게 동일한 경우에 사용 권한입니다.If the user has the CONTROL SERVER permission but is not a member of the role, this function will correctly report that the user is not a member of the sysadmin role, even though the user has the same permissions.

현재 사용자 지정된 된 Windows 그룹의 구성원 인지 확인 하려면 또는 SQL ServerSQL Server 데이터베이스 역할을 사용 하 여 IS_MEMBER ( Transact SQL ) .To determine whether the current user is a member of the specified Windows group or SQL ServerSQL Server database role, use IS_MEMBER (Transact-SQL). 확인 하려면 여부는 SQL ServerSQL Server 로그인이 데이터베이스 역할의 멤버를 사용 하 여 IS_ROLEMEMBER ( Transact SQL ) .To determine whether a SQL ServerSQL Server login is a member of a database role, use IS_ROLEMEMBER (Transact-SQL).

PermissionsPermissions

서버 역할에 대한 VIEW DEFINITION 권한이 필요합니다.Requires VIEW DEFINITION permission on the server role.

Examples

다음 예에서는 현재 사용자의 SQL ServerSQL Server 로그인이 sysadmin 고정 서버 역할의 멤버인지 여부를 보여 줍니다.The following example indicates whether the SQL ServerSQL Server login for the current user is a member of the sysadmin fixed server role.

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 고정된 서버 역할입니다.The following example indicates whether the domain login Pat is a member of the diskadmin fixed server role.

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

관련 항목:See Also

Is_member( Transact SQL ) IS_MEMBER (Transact-SQL)
보안 함수(Transact-SQL)Security Functions (Transact-SQL)