SET_SYS_CONTEXT
SET_SYS_CONTEXT (컨텍스트 값 설정)
지정된 네임스페이스의 지정된 키에 값을 설정하며, 나중에 SYS_CONTEXT로 검색할 수 있어요.
이 함수는 두 가지 작동 모드가 있어요:
- 불변 세션 속성(SNOWFLAKE$SESSION_ATTRIBUTES 네임스페이스): 한 번 설정하면 불변인 사용자 지정 세션 속성을 설정해요. 세션 기간 동안 지속돼요. 애플리케이션 컨텍스트, 사용자 속성, 감사 정보 같은 세션의 메타데이터를 추적하는 데 유용해요.
- 세션 변수(다른 네임스페이스): SET 명령처럼 작동하며, 업데이트할 수 있는 세션 변수를 설정해요. 변수의 이전 값을 반환해요.
참조: SYS_CONTEXT, SYS_CONTEXT (SNOWFLAKE$SESSION_ATTRIBUTES 네임스페이스), SET
본문
구문
CALL SET_SYS_CONTEXT( '<namespace>', '<key>', '<value>' )
인자
'
키-값 쌍을 저장할 네임스페이스예요. 지원되는 네임스페이스:
SNOWFLAKE$SESSION_ATTRIBUTES— 불변인 사용자 지정 세션 속성을 저장해요. 속성 이름은 대소문자를 구분해요.- 기타 다른 문자열(또는 NULL) — 네임스페이스를 세션 변수 이름의 접두사로 취급해요(SET 명령과 유사). 네임스페이스는 대소문자를 구분해요.
'
설정할 속성 또는 변수의 이름이에요. 모든 키 이름은 대소문자를 구분해요.
'
할당할 값이에요. 값은 문자열이거나 문자열로 평가되는 표현식이어야 해요.
반환 값
이 함수는 VARCHAR 값을 반환해요:
- SNOWFLAKE$SESSION_ATTRIBUTES 네임스페이스의 경우: 항상 NULL을 반환해요(불변 속성은 이전 값을 가질 수 없기 때문). 현재 세션에서 속성이 이미 설정되었으면 함수는 대신 오류를 발생시켜요.
- 다른 네임스페이스의 경우: 세션 변수의 이전 값을 반환하거나, 변수가 이전에 존재하지 않았으면 NULL을 반환해요. 이는 SET 명령의 동작과 일치해요.
2026_06 동작 변경 번들
계정에서 2026_06 동작 변경 번들이 활성화되면 SYS_CONTEXT를 통한 읽기의 반환 타입이 변경돼요. SET_SYS_CONTEXT의 반환 값(속성 또는 세션 변수의 이전 값)은 영향을 받지 않고 계속 VARCHAR예요.
접근 제어 요구 사항
사용자 지정 세션 속성을 설정하는 데 특별한 권한은 필요하지 않아요. 모든 사용자가 자신의 세션에서 속성을 설정할 수 있어요.
사용상 주의사항
SNOWFLAKE$SESSION_ATTRIBUTES 네임스페이스(불변 속성):
- 속성은 불변이에요. 속성이 한 번 설정되면 다시 설정하려는 시도는(같은 값으로도) 오류를 초래해요.
- 속성 이름은 대소문자를 구분해요.
app_context,App_Context,APP_CONTEXT는 서로 다른 세 속성으로 취급돼요. - 속성은 세션 범위예요. 세션 기간 동안 지속되며 다른 세션에서는 보이지 않아요.
- 속성 값을 검색하려면 SYS_CONTEXT(SNOWFLAKE$SESSION_ATTRIBUTES 네임스페이스)를 사용해요:
SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', '<key>').
다른 네임스페이스(세션 변수):
- 변수 이름은 대소문자를 구분해요.
user_id와USER_ID는 서로 다른 변수로 취급돼요. - 변수는 업데이트할 수 있어요. 이미 존재하는 변수를 설정하면 이전 값을 반환하고 새 값으로 업데이트해요.
- 네임스페이스(제공된 경우)는 접두사로 사용돼요:
SET_SYS_CONTEXT('myns', 'mykey', 'val')은myns.mykey라는 변수를 만들어요. - 변수는 설정할 때 사용한 정확한 대소문자로
SYS_CONTEXT('<namespace>', '<key>')를 사용해 검색할 수 있어요.
일반 참고 사항:
- 셸에서 큰따옴표로 묶인 문자열에 함수 호출을 지정하는 경우
$문자를 백슬래시(\)로 이스케이프해$session_attributes가 셸 변수로 해석되지 않도록 해요.
예시
예시 1: 불변 세션 속성(SNOWFLAKE$SESSION_ATTRIBUTES 네임스페이스)
애플리케이션 컨텍스트를 추적하는 사용자 지정 속성 설정:
CALL SET_SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'app_context', 'production');
속성 값 검색(속성 이름은 대소문자를 구분함):
SELECT SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'app_context');
+---------------------------------------------------------------+
| SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'app_context') |
|---------------------------------------------------------------|
| production |
+---------------------------------------------------------------+
속성이 한 번 설정되면 변경 시도는 오류를 초래해요:
-- This will fail because the attribute is immutable
CALL SET_SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'app_context', 'development');
SQL compilation error: Cannot overwrite context value: app_context
속성 이름은 대소문자를 구분해요:
-- This succeeds because it's a different attribute name (different case)
CALL SET_SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'APP_CONTEXT', 'staging');
SELECT SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'app_context') AS lower_case,
SYS_CONTEXT('SNOWFLAKE$SESSION_ATTRIBUTES', 'APP_CONTEXT') AS upper_case;
+------------+------------+
| LOWER_CASE | UPPER_CASE |
|------------+------------|
| production | staging |
+------------+------------+
예시 2: 세션 변수(다른 네임스페이스)
네임스페이스 접두사로 세션 변수 설정:
CALL SET_SYS_CONTEXT('myapp', 'user_id', '12345');
+---------------------------------------------------+
| SET_SYS_CONTEXT('myapp', 'user_id', '12345') |
|---------------------------------------------------|
| NULL |
+---------------------------------------------------+
변수는 제공된 정확한 대소문자로 저장돼요: myapp.user_id. 검색해보기:
SELECT SYS_CONTEXT('myapp', 'user_id');
+----------------------------------+
| SYS_CONTEXT('myapp', 'user_id') |
|----------------------------------|
| 12345 |
+----------------------------------+
변수 업데이트(이전 값을 반환함):
CALL SET_SYS_CONTEXT('myapp', 'user_id', '67890');
+---------------------------------------------------+
| SET_SYS_CONTEXT('myapp', 'user_id', '67890') |
|---------------------------------------------------|
| 12345 |
+---------------------------------------------------+
더 알아보기
- Context functions (Session) — 컨텍스트 함수 모음
- SYS_CONTEXT — 컨텍스트 값 검색