다음을 통해 공유


SESSION_CONTEXT(Transact-SQL)

적용 대상: Microsoft Fabric의 Microsoft Fabric Warehouse에 있는 SQL Server 2016(13.x) 이상 Azure SQL Database Azure SQL Managed Instance Azure Synapse AnalyticsSQL 분석 엔드포인트

현재 세션 컨텍스트에서 지정된 키의 값을 반환합니다. 값은 sp_set_session_context 프로시저를 사용하여 설정됩니다.

Transact-SQL 구문 규칙

구문

SESSION_CONTEXT(N'key')

인수

'key'

검색할 값의 키입니다. sysname입니다.

반환 형식

sql_variant

반환 값

세션 컨텍스트에서 지정된 키와 연결된 값이거나 NULL 해당 키에 대해 설정된 값이 없는 경우입니다.

사용 권한

모든 사용자는 해당 세션에 대한 세션 컨텍스트를 읽을 수 있습니다.

설명

'의 SESSION_CONTEXTMARS 동작은 .의 CONTEXT_INFO동작과 비슷합니다. MARS 일괄 처리가 키-값 쌍을 설정하는 경우 새 값이 완료된 일괄 처리 후에 시작하지 않는 한 동일한 연결의 다른 MARS 일괄 처리에서 새 값이 반환되지 않습니다. 연결에서 여러 MARS 일괄 처리가 활성 상태이면 값을 로 read_only설정할 수 없습니다. 이렇게 하면 경합 조건과 어떤 값이 이기는지에 대한 비결정성을 방지할 수 있습니다.

예제

다음 간단한 예제에서는 키 user_id 에 대한 세션 컨텍스트 값을 4로 설정한 다음 함수를 SESSION_CONTEXT 사용하여 값을 검색합니다.

EXECUTE sp_set_session_context 'user_id', 4;

SELECT SESSION_CONTEXT(N'user_id');

알려진 문제

문제 발견된 날짜 상태 해결된 날짜
특정 조건에서 함수에서 AV(액세스 위반) 예외가 SESSION_CONTEXT 발생할 수 있습니다. 세션이 다시 사용하도록 다시 설정될 때 함수가 SESSION_CONTEXT 병렬 실행 계획 내에서 실행될 때 AV 예외 또는 잘못된 결과가 발생할 수 있습니다.

병렬 계획 내에서 잘못된 결과 문제를 SESSION_CONTEXT 해결하기 위해 SQL Server 2019(15.x) CU 14에 도입된 수정 사항은 나중에 특정 조건에서 AV 예외를 발생시키는 것으로 확인되었습니다.

이 문제를 완화하려면 추적 플래그 11024를 시작, 전역 또는 세션 추적 플래그로 사용하도록 설정할 수 있습니다. 이 추적 플래그는 강제로 SESSION_CONTEXT 직렬로 실행되어 병렬 쿼리 계획에 참여하지 못하게 합니다.

적용 대상: SQL Server 2019(15.x) CU 14 이상 버전.
2022년 1월 해결 방법 있음