SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS

SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS

시스템이 이미 처리하기 시작한 지정된 태스크의 실행(즉 TASK_HISTORY 출력에서 EXECUTING 상태인 실행)을 취소하는 시스템 함수예요.

출처: Snowflake SQL Reference

본문

Syntax

SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS( '<task_name>' )

Arguments

task_name:

태스크의 이름이에요.

Usage notes

  • 태스크 소유자(즉 태스크에 대한 OWNERSHIP 권한이 있는 역할) 또는 태스크에 대한 OPERATE 권한이 있는 역할만 이 함수를 호출할 수 있어요.
  • task_name은 문자열이므로 작은따옴표로 묶어야 해요:
    • 이름이 정규화된 경우 데이터베이스와 스키마를 포함한 전체 이름을 작은따옴표로 묶어야 해요; 예: '<db>.<schema>.<task_name>'.
    • 태스크 이름이 대소문자를 구분하거나 특수 문자·공백을 포함하면 대소문자/문자를 처리하기 위해 큰따옴표가 필요해요. 큰따옴표는 작은따옴표 안에 묶여야 해요; 예: '"<task_name>"'.
  • 이 함수는 지정된 태스크의 현재 실행이 실제로 취소되기 전에 성공 메시지를 반환해요.
  • 지정된 태스크의 현재 실행이 거의 완료된 경우 이 함수가 실행을 취소하지 못할 수 있어요.
  • 이 함수는 지정된 태스크의 현재 실행만 취소해요. 이 태스크를 포함하는 태스크 그래프의 추가 태스크도 실행 중일 수 있어요. 이러한 실행을 취소하려면 이 함수를 호출하고 각 추가 자식 태스크의 이름을 별도로 지정해야 해요.
  • 태스크가 CREATE OR REPLACE TASK로 교체된 경우 이 함수는 이전 태스크의 진행 중인 실행을 취소할 수 없어요.

CREATE OR REPLACE TASK로 교체한 뒤 진행 중인 태스크 실행 중지하기

  1. 진행 중인 실행의 쿼리 ID 찾기; 예:
select name, query_id, state, scheduled_time, error_message
from table(information_schema.task_history(task_name => 'my_task'));
  1. 쿼리 ID로 SYSTEM$CANCEL_QUERY 함수를 사용해 쿼리 취소하기; 예:
select system$cancel_query('query_id');
  1. 취소가 완료될 때까지 몇 초 동안 태스크 실행을 모니터링하기; 예:
select name, query_id, state, scheduled_time, error_message
from table(information_schema.task_history(task_name => 'my_task'));
  • 태스크 실행이 취소되었는지 완료되었는지, 또는 자식 태스크가 현재 실행 중인지 확인하려면 TASK_HISTORY 함수를 조회하세요.
  • 태스크의 향후 실행이 시작되지 않도록 하려면 먼저 태스크를 일시 중지(ALTER TASK … SUSPEND 사용)한 다음 이 함수를 실행할 것을 권장해요. 이 함수가 실행될 때 태스크가 일시 중지되지 않으면 Snowflake 클라우드 서비스가 이 태스크의 실행 스케줄링을 다시 시작하는 데 현재 몇 분이 걸릴 수 있다는 점에 유의하세요.

Examples

대소문자를 구분하지 않는 이름의 태스크 현재 실행 취소하기:

SELECT SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS('mydb.myschema.mytask');

대소문자를 구분하는 이름의 태스크 현재 실행 취소하기:

SELECT SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS('mydb.myschema."myTask"');

다음 예제는 태스크 실행의 성공적인 취소를 보여줘요:

SELECT SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS('my_task');

+------------------------------------------------------------------------------------+
| SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS('my_task')                              |
|------------------------------------------------------------------------------------|
| Marked 1 task runs for cancellation. It may take a few seconds for cancellation to |
| complete. Query ids canceled: [2036a04c-9c46-4c6b-b354-67a44b5e0b50]               |
+------------------------------------------------------------------------------------+

다음 예제는 태스크에 현재 실행 중인 실행이 없어 함수가 어떤 실행도 취소하지 않음을 보여줘요:

SELECT SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS('my_task');

+------------------------------------------------------------------------------------+
| SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS('my_task') |
|------------------------------------------------------------------------------------|
| Task MY_TASK has no currently running executions. If the task was dropped or       |
| replaced after a previous execution started, use SYSTEM$CANCEL_QUERY along with    |
| the query id to cancel the run.                                                    |
|------------------------------------------------------------------------------------+

더 알아보기 (Learn more)