カテゴリ:

システム関数 (システム制御)

SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS

システムが既に処理を開始している指定タスクの実行をキャンセルします(つまり、 TASK_HISTORY 出力で EXECUTING 状態での実行)。

構文

SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS( '<task_name>' )
Copy

引数

task_name

タスクの名前。

使用上の注意

  • タスクの所有者(すなわち、タスクの 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'));
      
      Copy
    2. クエリをキャンセルするには、 SYSTEM$CANCEL_QUERY 関数を使用して、クエリ ID を指定します。例は次のとおりです。

      select system$cancel_query('query_id');
      
      Copy
    3. キャンセルが完了するまで数秒間タスクの実行をモニターします。例は次のとおりです。

      select name, query_id, state, scheduled_time, error_message
      from table(information_schema.task_history(task_name => 'my_task'));
      
      Copy
  • タスクの実行がキャンセルされたか完了したか、または現在実行中の子タスクがあるかを確認するには、 TASK_HISTORY 関数をクエリします。

  • 今後タスクの実行が開始されないようにするには、最初にタスクを一時停止( ALTER TASK ... SUSPEND を使用)してから、この関数を実行することお勧めします。

    この関数の実行時にタスクが 一時停止されていない 場合は、Snowflakeクラウドサービスがこのタスクの実行のスケジューリングを再開するために、現在数分間が必要です。

大文字と小文字を区別しない名前のタスクの現在の実行をキャンセルします。

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

大文字と小文字を区別する名前のタスクの現在の実行をキャンセルします。

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