sp_setapprole(Transact-SQL)sp_setapprole (Transact-SQL)

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

현재 데이터베이스의 응용 프로그램 역할과 연관된 사용 권한을 활성화합니다.Activates the permissions associated with an application role in the current database.

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

구문Syntax


sp_setapprole [ @rolename = ] 'role',  
    [ @password = ] { encrypt N'password' }   
      |  
        'password' [ , [ @encrypt = ] { 'none' | 'odbc' } ]  
        [ , [ @fCreateCookie = ] true | false ]  
    [ , [ @cookie = ] @cookie OUTPUT ]  

인수Arguments

[ @rolename = ] '역할'[ @rolename = ] 'role'
현재 데이터베이스에 정의된 응용 프로그램 역할의 이름입니다.Is the name of the application role defined in the current database. 역할sysname, 기본값은 없습니다.role is sysname, with no default. 역할 현재 데이터베이스에 존재 해야 합니다.role must exist in the current database.

[ @password = ] {암호화 N'암호'을 (를)[ @password = ] { encrypt N'password' }
응용 프로그램 역할을 활성화하는 데 필요한 암호입니다.Is the password required to activate the application role. 암호sysname, 기본값은 없습니다.password is sysname, with no default. 암호 ODBC를 사용 하 여 난독 처리 될 암호화 함수입니다.password can be obfuscated by using the ODBC encrypt function. 사용 하는 경우는 암호화 함수를 배치 하 여 암호를 유니코드 문자열로 변환 해야 N 첫 번째 따옴표 앞입니다.When you use the encrypt function, the password must be converted to a Unicode string by placing N before the first quotation mark.

암호화 옵션을 사용 하는 연결에서 지원 되지 않습니다 SqlClient합니다.The encrypt option is not supported on connections that are using SqlClient.

중요

ODBC 암호화 함수 암호화를 제공 하지 않습니다.The ODBC encrypt function does not provide encryption. 이 함수를 사용해서는 네트워크로 전송되는 암호를 보호할 수 없습니다.You should not rely on this function to protect passwords that are transmitted over a network. 이 정보가 네트워크를 통해 전송되는 경우 SSL이나 IPSec을 사용하십시오.If this information will be transmitted across a network, use SSL or IPSec.

@encrypt '없음' =@encrypt = 'none'
난독 처리가 사용되지 않도록 지정합니다.Specifies that no obfuscation be used. 암호는 일반 텍스트로 SQL ServerSQL Server에 전달됩니다.The password is passed to SQL ServerSQL Server as plain text. 기본값입니다.This is the default.

@encrypt'odbc' =@encrypt= 'odbc'
ODBC를 사용 하 여 암호 ODBC는 난독 처리를 지정 암호화 암호를 보내기 전에 함수는 SQL Server 데이터베이스 엔진SQL Server Database Engine합니다.Specifies that ODBC will obfuscate the password by using the ODBC encrypt function before sending the password to the SQL Server 데이터베이스 엔진SQL Server Database Engine. 이 값은 ODBC 클라이언트 또는 SQL Server용 OLE DB 공급자를 사용하는 경우에만 지정할 수 있습니다.This can be specified only when you are using either an ODBC client or the OLE DB Provider for SQL Server.

[ @fCreateCookie = ] true | false[ @fCreateCookie = ] true | false
쿠키를 만들지 여부를 지정합니다.Specifies whether a cookie is to be created. true 1로 암시적으로 변환 됩니다.true is implicitly converted to 1. false 암시적으로 0으로 변환 됩니다.false is implicitly converted to 0.

[ @cookie = ] @cookie 출력[ @cookie = ] @cookie OUTPUT
쿠키를 포함할 출력 매개 변수를 지정합니다.Specifies an output parameter to contain the cookie. 경우에 쿠키는 생성의 값 @fCreateCookietrue합니다.The cookie is generated only if the value of @fCreateCookie is true. varbinary(8000)varbinary(8000)

참고

현재 sp_setapprole 에 대한 쿠키 OUTPUT 매개 변수는 정확한 최대 길이인 varbinary(8000) 로 정의되어 있습니다.The cookie OUTPUT parameter for sp_setapprole is currently documented as varbinary(8000) which is the correct maximum length. 그러나 현재 구현은 varbinary(50) 입니다.However the current implementation returns varbinary(50). 응용 프로그램은 계속해서 varbinary(8000) 를 예약하여 후속 릴리스에서 쿠키 반환 크기가 늘어날 경우에도 응용 프로그램이 제대로 작동할 수 있도록 해야 합니다.Applications should continue to reserve varbinary(8000) so that the application continues to operate correctly if the cookie return size increases in a future release.

반환 코드 값Return Code Values

0(성공) 및 1(실패)0 (success) and 1 (failure)

주의Remarks

응용 프로그램 역할이 활성화에 사용 하 여 sp_setapprole를 활성 상태로 사용자는 서버에서 연결을 끊습니다 또는 실행 될 때까지 sp_unsetapprole합니다.After an application role is activated by using sp_setapprole, the role remains active until the user either disconnects from the server or executes sp_unsetapprole. sp_setapprole 직접만 실행할 수 Transact-SQLTransact-SQL 문.sp_setapprole can be executed only by direct Transact-SQLTransact-SQL statements. sp_setapprole 다른 저장 프로시저 또는 사용자 정의 트랜잭션 내에서 실행할 수 없습니다.sp_setapprole cannot be executed within another stored procedure or within a user-defined transaction.

응용 프로그램 역할의 개요를 참조 하십시오. 응용 프로그램 역할합니다.For an overview of application roles, see Application Roles.

중요

응용 프로그램 역할 암호가 네트워크를 통해 전송되는 경우 이 암호를 보호하려면 응용 프로그램 역할을 사용할 때 항상 암호화된 연결을 사용해야 합니다.To protect the application role password when it is transmitted across a network, you should always use an encrypted connection when enabling an application role..

MicrosoftMicrosoft ODBC 암호화 옵션에서 지원 하지 않는 SqlClient합니다.The MicrosoftMicrosoft ODBC encrypt option is not supported by SqlClient. 자격 증명을 저장해야 할 경우에는 crypto API 함수를 사용하여 암호화합니다.If you must store credentials, encrypt them with the crypto API functions. 매개 변수 암호 는 단방향 해시로 저장 됩니다.The parameter password is stored as a one-way hash. 이전 버전과의 호환성을 유지 하기 위해 SQL ServerSQL Server, 암호 복잡성 정책에 의해 적용 되지 sp_addapprole합니다.To preserve compatibility with earlier versions of SQL ServerSQL Server, password complexity policy is not enforced by sp_addapprole. 암호 복잡성 정책의 적용 하려면 사용 하 여 CREATE APPLICATION ROLE합니다.To enforce password complexity policy, use CREATE APPLICATION ROLE.

PermissionsPermissions

멤버 자격이 필요 공용 및 역할에 대 한 암호를 알고 있습니다.Requires membership in public and knowledge of the password for the role.

Examples

1.A. 암호화 옵션을 사용하지 않고 응용 프로그램 역할 활성화Activating an application role without the encrypt option

다음 예에서는 현재 사용자가 사용하는 응용 프로그램에 대해 특별히 지정한 사용 권한을 부여하도록 만든 일반 텍스트 암호인 SalesAppRole를 사용하여 AsDeF00MbXX이라는 응용 프로그램 역할을 활성화합니다.The following example activates an application role named SalesAppRole, with the plain-text password AsDeF00MbXX, created with permissions specifically designed for the application used by the current user.

EXEC sp_setapprole 'SalesApprole', 'AsDeF00MbXX';  
GO  

다음 예에서는 Sales11 암호로 fdsd896#gfdbfdkjgh700mM 응용 프로그램 역할을 활성화하고 쿠키를 만듭니다.The following example activates the Sales11 application role with password fdsd896#gfdbfdkjgh700mM, and creates a cookie. 다음 예에서는 현재 사용자의 이름을 반환한 다음 sp_unsetapprole을 실행하여 원래 컨텍스트로 되돌아갑니다.The example returns the name of the current user, and then reverts to the original context by executing sp_unsetapprole.

DECLARE @cookie varbinary(8000);  
EXEC sp_setapprole 'Sales11', 'fdsd896#gfdbfdkjgh700mM'  
    , @fCreateCookie = true, @cookie = @cookie OUTPUT;  
-- The application role is now active.  
SELECT USER_NAME();  
-- This will return the name of the application role, Sales11.  
EXEC sp_unsetapprole @cookie;  
-- The application role is no longer active.  
-- The original context has now been restored.  
GO  
SELECT USER_NAME();  
-- This will return the name of the original user.   
GO   

관련 항목:See Also

시스템 저장 프로시저(Transact-SQL) System Stored Procedures (Transact-SQL)
Security Stored Procedures (Transact-SQL) Security Stored Procedures (Transact-SQL)
CREATE APPLICATION ROLE (Transact-SQL) CREATE APPLICATION ROLE (Transact-SQL)
DROP APPLICATION ROLE (Transact-SQL) DROP APPLICATION ROLE (Transact-SQL)
sp_unsetapprole (TRANSACT-SQL)sp_unsetapprole (Transact-SQL)