SYS_CONTEXT
SYS_CONTEXT (SNOWFLAKE$CURRENT 네임스페이스)
함수가 호출된 현재 실행 컨텍스트에 대한 정보를 반환해요. 함수가 소유자 권한 실행 파일 안이나 에이전트 호출 중에 호출되면 현재 실행 컨텍스트는 세션 컨텍스트와 다를 수 있어요.
이 함수는 다음 컨텍스트에서 호출할 수 있어요:
- 현재 세션에서 이 함수를 직접 호출할 수 있어요.
- 이 함수를 호출하는 호출자 권한 실행 파일(예: 호출자 권한 저장 프로시저)을 실행할 수 있어요.
- 이 함수를 호출하는 소유자 권한 실행 파일(예: 소유자 권한 저장 프로시저)을 실행할 수 있어요.
SNOWFLAKE$SESSION네임스페이스와 달리, 소유자 권한 실행 파일에서 이 함수를 호출하는 데는 READ SESSION 권한이 필요하지 않아요.
다른 어떤 컨텍스트에서도 함수는 NULL을 반환해요.
참조: SYS_CONTEXT, SYS_CONTEXT (SNOWFLAKE$SESSION 네임스페이스), IS_AGENT_ACTIVATED (SYS_CONTEXT 함수), IS_DATABASE_ROLE_ACTIVATED (SYS_CONTEXT 함수), IS_ROLE_ACTIVATED (SYS_CONTEXT 함수), Restricted Session Scope for agents
출처: Snowflake SQL Reference - SYS_CONTEXT (SNOWFLAKE$CURRENT)
본문
구문
속성 검색 구문:
SYS_CONTEXT('SNOWFLAKE$CURRENT', '<property>')
함수 호출 구문:
SYS_CONTEXT('SNOWFLAKE$CURRENT', '<function>' [, '<argument>', ... ])
인자
'SNOWFLAKE$CURRENT'
현재 실행 컨텍스트에 대한 정보를 반환하는 속성을 검색하거나 함수를 호출하려는 것을 지정해요.
'
검색하려는 속성의 이름이에요. 다음 속성을 지정할 수 있어요:
| 속성 | 설명 |
|---|---|
| AGENT_TYPE | 현재 실행 컨텍스트에서 활성 상태인 에이전트의 유형을 반환해요. 가능한 값: CORTEX_AGENT(지속형, 명명된 Cortex Agent), CORTEX_LITE_AGENT(REST API 또는 Snowflake CoCo 클라이언트를 통해 호출되는 무상태 온디맨드 에이전트), EXTERNAL_AGENT(SERVICE_AGENT 사용자 유형 또는 IS_AGENTIC = TRUE로 구성된 사용자 지정 OAuth 통합을 사용하는 외부 에이전트). 현재 실행 컨텍스트에 활성 에이전트가 없으면 NULL을 반환해요. QUERY_HISTORY의 agent_type 열과 같은 값을 반환해요. |
| IS_AGENT_ACTIVATED | 현재 실행 컨텍스트에 에이전트가 활성 상태이면 'TRUE'를 반환하고, 그렇지 않으면 'FALSE'를 반환해요. 에이전트는 다음 경우에 활성 상태예요: Snowflake 자사 에이전트가 쿼리를 실행 중일 때(명명된 Cortex Agent, REST API 또는 Snowflake CoCo 클라이언트로 호출되는 무상태 라이트 에이전트, 또는 Snowflake CoWork를 통한 쿼리), 외부 에이전트가 관리형 MCP 서버를 통해 연결될 때, 세션이 SERVICE_AGENT 사용자에 의해 열렸을 때, 세션이 IS_AGENTIC = TRUE로 구성된 사용자 지정 OAuth 통합을 사용할 때. 에이전트가 쿼리를 실행 중일 때 데이터 접근을 제한하려면 마스킹 정책과 행 접근 정책에서 이 속성을 사용해요. 자세한 내용은 IS_AGENT_ACTIVATED를 참고해요. |
'
호출하려는 함수의 이름이에요. SNOWFLAKE$CURRENT 네임스페이스를 통해 호출되면 IS_ROLE_ACTIVATED와 IS_DATABASE_ROLE_ACTIVATED는 세션 대신 현재 실행 컨텍스트를 확인해요.
다음 함수를 호출할 수 있어요:
- IS_AGENT_ACTIVATED (SYS_CONTEXT 함수)
- IS_DATABASE_ROLE_ACTIVATED (SYS_CONTEXT 함수)
- IS_ROLE_ACTIVATED (SYS_CONTEXT 함수)
'
호출하려는 함수에 전달할 인자들이에요.
IS_ROLE_ACTIVATED는 하나 이상의 역할 이름을 받아들이고 역할 중 하나라도 활성화되어 있으면 'TRUE'를 반환해요. 각 역할이 문자열 리터럴 같은 상수 값일 때만 여러 역할을 지정할 수 있어요. 상수가 아닌 표현식인 역할을 지정할 때는 단일 역할만 지정할 수 있어요.
반환 값
이 함수는 VARCHAR 값 또는 NULL을 반환해요:
- 반환 값은 검색하는 속성 또는 호출하는 함수에 따라 달라져요.
- 지원되는 컨텍스트 밖에서 SNOWFLAKE$CURRENT 네임스페이스로 SYS_CONTEXT를 호출하면 NULL을 반환해요.
2026_06 동작 변경 번들
계정에서 2026_06 동작 변경 번들이 활성화되면 SYS_CONTEXT('SNOWFLAKE$CURRENT', 'IS_ROLE_ACTIVATED', '<role>')와 SYS_CONTEXT('SNOWFLAKE$CURRENT', 'IS_AGENT_ACTIVATED')는 BOOLEAN을 반환해요. 이 네임스페이스의 다른 속성과 함수는 계속 VARCHAR를 반환해요.
::BOOLEAN 또는 ::NUMBER 같은 기존 캐스트는 변경 없이 계속 동작해요.
네임스페이스별 모든 속성과 함수의 반환 타입에 대해서는 SYS_CONTEXT return types를 참고해요.
사용상 주의사항
-
SNOWFLAKE$CURRENT 네임스페이스는 가장 안쪽 실행 컨텍스트의 값을 반환해요. 예를 들어 소유자 권한 저장 프로시저 안에서는 호출자의 세션 컨텍스트가 아니라 소유자의 컨텍스트를 반영해요. 세션 수준 값이 필요하다면 대신 SNOWFLAKE$SESSION 네임스페이스를 사용해요.
-
다음 표는 SNOWFLAKE$CURRENT와 SNOWFLAKE$SESSION이 서로 다른 값을 반환하는 경우를 요약해요:
시나리오 SNOWFLAKE$CURRENT SNOWFLAKE$SESSION 세션에서 쿼리 직접 실행 세션 컨텍스트 세션 컨텍스트 호출자 권한 저장 프로시저 안 세션 컨텍스트 세션 컨텍스트 소유자 권한 저장 프로시저 안 소유자의 컨텍스트(활성화된 역할이 소유자를 반영함, READ SESSION 불필요) 세션 컨텍스트(READ SESSION 권한 필요) 에이전트 호출 중 에이전트의 실행 컨텍스트(에이전트 속성이 채워짐) 호출 사용자의 세션 컨텍스트 -
정책을 테스트할 때 이 네임스페이스의 함수 값들을 시뮬레이션하려면 해당 POLICY_CONTEXT 인자를 사용해요. 예를 들어 사용자 지정 OAuth 통합을 사용해 IS_ROLE_ACTIVATED의 결과를 시뮬레이션하려면 SNOWFLAKE$CURRENT_ACTIVATED_ROLES를 사용해요.
-
셸에서 큰따옴표로 묶인 문자열에 함수 호출을 지정하는 경우
$문자를 백슬래시(\)로 이스케이프해$CURRENT가 셸 변수로 해석되지 않도록 해요.
예시
다음 예시들은 현재 실행 컨텍스트에서 에이전트 속성을 검색하고 역할 활성화를 확인하는 방법을 보여줘요:
- 현재 컨텍스트에서 에이전트 유형 검색
- 현재 컨텍스트에서 역할 활성화 확인
- 현재 컨텍스트에서 데이터베이스 역할 활성화 확인
현재 컨텍스트에서 에이전트 유형 검색
다음 예시는 현재 쿼리를 실행 중인 에이전트의 유형을 반환하거나, 활성 에이전트가 없으면 NULL을 반환해요:
SELECT SYS_CONTEXT('SNOWFLAKE$CURRENT', 'AGENT_TYPE');
현재 컨텍스트에서 역할 활성화 확인
다음 예시는 현재 실행 컨텍스트(소유자 권한 실행 파일 안에서는 세션 컨텍스트와 다를 수 있음)에서 역할이 활성화되어 있는지 확인해요:
SELECT SYS_CONTEXT('SNOWFLAKE$CURRENT', 'IS_ROLE_ACTIVATED', 'analyst')::BOOLEAN;
현재 컨텍스트에서 데이터베이스 역할 활성화 확인
다음 예시는 현재 실행 컨텍스트에서 데이터베이스 역할이 활성화되어 있는지 확인해요:
SELECT SYS_CONTEXT('SNOWFLAKE$CURRENT', 'IS_DATABASE_ROLE_ACTIVATED', 'ANALYST_ROLE')::BOOLEAN;
더 알아보기
- Context functions (General) — 컨텍스트 함수 모음
- SYS_CONTEXT (SNOWFLAKE$SESSION 네임스페이스) — 세션 네임스페이스