sp_setapprole(Transact-SQL)

적용 대상:SQL ServerAzure SQL Database

현재 데이터베이스의 애플리케이션 역할과 연관된 사용 권한을 활성화합니다.

Transact-SQL 구문 표기 규칙

구문

sp_setapprole
    [ @rolename = ] N'rolename'
    , [ @password = ] N'password'
    [ , [ @encrypt = ] 'encrypt' ]
    [ , [ @fCreateCookie = ] fCreateCookie ]
    [ , [ @cookie = ] cookie OUTPUT ]
[ ; ]

인수

[ @rolename = ] N'rolename'

현재 데이터베이스에 정의된 애플리케이션 역할의 이름입니다. @rolename 기본값이 없는 sysname입니다. @rolename 현재 데이터베이스에 있어야 합니다.

[ @password = ] { N'password 암호화' }

애플리케이션 역할을 활성화하는 데 필요한 암호입니다. @password 기본값이 없는 sysname입니다. @password ODBC encrypt 함수를 사용하여 난독 처리할 수 있습니다. 함수를 encrypt 사용하는 경우 첫 번째 따옴표 앞에 배치 N 하여 암호를 유니코드 문자열로 변환해야 합니다.

암호화 옵션은 SqlClient를 사용하는 연결에서 지원되지 않습니다.

Important

ODBC encrypt 함수는 암호화를 제공하지 않습니다. 네트워크를 통해 전송되는 암호를 보호하기 위해 이 함수를 사용하면 안 됩니다. 이 정보가 네트워크를 통해 전송되는 경우 TLS 또는 IPSec을 사용합니다.

[ @encrypt = ] { 'none' | 'odbc' }

SQL Server 데이터베이스 엔진 암호를 보내기 전에 암호화 유형을 지정합니다. @encrypt varchar(10)이며 이러한 값 중 하나일 수 있습니다.

설명
none(기본값) 난독 처리가 사용되지 않음을 지정합니다. 암호는 일반 텍스트로 SQL Server에 전달됩니다.
odbc ODBC가 SQL Server 데이터베이스 엔진 암호를 보내기 전에 ODBC encrypt 함수를 사용하여 암호를 난독 처리하도록 지정합니다. 이 값은 ODBC 클라이언트 또는 SQL Server용 OLE DB 공급자를 사용하는 경우에만 지정할 수 있습니다.

[ @fCreateCookie = ] { 'true' | 'false' }

쿠키를 만들 것인지 여부를 지정합니다. @fCreateCookie 비트이며 기본값은 .입니다0.

true 는 암시적으로 .로 변환됩니다 1. false 는 암시적으로 .로 변환됩니다 0.

쿠키를 포함할 출력 매개 변수를 지정합니다. @cookie varbinary(8000) 형식의 OUTPUT 매개 변수입니다. 쿠키는 @fCreateCookie인 경우에만 생성됩니다true.

참고 항목

현재 구현은 varbinary(50)를 반환하지만 애플리케이션은 문서화된 varbinary(8000)를 예약해야 하므로 향후 릴리스에서 쿠키 반환 크기가 증가하는 경우 애플리케이션이 계속 올바르게 작동합니다.

반환 코드 값

0 (성공) 및 1 (실패).

설명

애플리케이션 역할을 사용하여 sp_setapprole활성화한 후에는 사용자가 서버에서 연결을 끊거나 실행할 때까지 역할이 다시 활성화됩니다기본.sp_unsetapprole 다른 저장 프로시저, 트리거 또는 사용자 정의 트랜잭션 내에서 사용할 sp_setapprole 수 없습니다. 직접 Transact-SQL 문으로만 실행할 수 있습니다.

애플리케이션 역할에 대한 개요는 애플리케이션 역할을 참조 하세요.

네트워크를 통해 전송할 때 애플리케이션 역할 암호를 보호하려면 애플리케이션 역할을 사용하도록 설정할 때 항상 암호화된 연결을 사용해야 합니다.

Microsoft ODBC encrypt 옵션은 SqlClient에서 지원되지 않습니다. 자격 증명을 저장해야 할 경우에는 crypto API 함수를 사용하여 암호화합니다. 매개 변수 @password 단방향 해시로 저장됩니다. 이전 버전의 SQL Server sp_addapprole 와의 호환성을 유지하기 위해 암호 복잡성 정책을 적용하지 않습니다. 암호 복잡성 정책을 적용하려면 CREATE APPLICATION ROLE을 사용합니다.

사용 권한

공용 멤버 자격과 역할에 대한 암호에 대한 지식이 필요합니다.

예제

A. 암호화 옵션 없이 애플리케이션 역할 활성화

다음 예제에서는 현재 사용자가 사용하는 애플리케이션에 대해 설계된 권한으로 만든 일반 텍스트 암호를 AsDeF00MbXX사용하여 명명SalesAppRole된 애플리케이션 역할을 활성화합니다.

EXEC sys.sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO

다음 예제에서는 암호fdsd896#gfdbfdkjgh700mMSales11 애플리케이션 역할을 활성화하고 쿠키를 만듭니다. 다음 예에서는 현재 사용자의 이름을 반환한 다음 sp_unsetapprole을 실행하여 원래 컨텍스트로 되돌아갑니다.

DECLARE @cookie VARBINARY(8000);

EXEC sys.sp_setapprole 'Sales11',
    'fdsd896#gfdbfdkjgh700mM',
    @fCreateCookie = true,
    @cookie = @cookie OUTPUT;

이제 애플리케이션 역할이 활성화되었습니다. USER_NAME() 는 애플리케이션 역할 Sales11의 이름을 반환합니다.

SELECT USER_NAME();

애플리케이션 역할을 설정 해제합니다.

EXEC sys.sp_unsetapprole @cookie;
GO

애플리케이션 역할이 더 이상 활성화되지 않습니다. 원래 컨텍스트가 복원됩니다. USER_NAME() 는 원래 사용자의 이름을 반환합니다.

SELECT USER_NAME();
GO