Categorias:

Funções do sistema (Controle do sistema)

SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS

Cancela uma execução da tarefa especificada que o sistema já começou a processar (ou seja, uma execução com um estado EXECUTING na saída TASK_HISTORY).

Sintaxe

SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS( '<task_name>' )
Copy

Argumentos

task_name

Nome da tarefa.

Notas de uso

  • Somente o proprietário da tarefa (ou seja, a função com o privilégio OWNERSHIP na tarefa) ou uma função com o privilégio OPERATE na tarefa pode chamar essa função.

  • task_name é uma cadeia de caracteres, portanto, deve ser delimitada por aspas simples:

    • O nome completo deve ser incluído entre aspas simples, incluindo o banco de dados e o esquema (se o nome for totalmente qualificado); por exemplo: '<bd>.<schema>.<task_name>'.

    • Se o nome da tarefa diferenciar maiúsculas de minúsculas ou incluir caracteres especiais ou espaços, serão necessárias aspas duplas para processar as maiúsculas e minúsculas ou os caracteres. As aspas duplas devem ser colocadas entre aspas simples; por exemplo: '"<task_name>"'.

  • Essa função retorna uma mensagem de sucesso antes que a execução atual da tarefa especificada seja realmente cancelada.

  • Se a execução atual da tarefa especificada estiver quase concluída, essa função pode não cancelar a execução.

  • Essa função cancela apenas a execução atual da tarefa especificada. Tarefas adicionais em um gráfico de tarefas que inclui esta tarefa também podem estar em execução. Para cancelar essas execuções, você deve chamar essa função e especificar o nome de cada tarefa filho adicional separadamente.

  • Se uma tarefa for substituída usando CREATE OR REPLACE TASK, essa função não poderá cancelar as execuções em andamento da tarefa anterior.

    Para interromper a execução de uma tarefa em andamento depois que você a substituir por CREATE OR REPLACE TASK:

    1. Encontre o ID da consulta da execução em andamento; por exemplo:

      select name, query_id, state, scheduled_time, error_message
      from table(information_schema.task_history(task_name => 'my_task'));
      
      Copy
    2. Cancele a consulta usando a função SYSTEM$CANCEL_QUERY com o ID da consulta, por exemplo:

      select system$cancel_query('query_id');
      
      Copy
    3. Monitore a execução da tarefa por alguns segundos até que o cancelamento seja concluído, por exemplo:

      select name, query_id, state, scheduled_time, error_message
      from table(information_schema.task_history(task_name => 'my_task'));
      
      Copy
  • Para verificar se uma execução de tarefa foi cancelada ou concluída, ou se alguma tarefa filho está atualmente em execução, consulte a função TASK_HISTORY.

  • Para evitar futuras execuções da tarefa, recomendamos primeiro suspender a tarefa (usando ALTER TASK … SUSPEND) e depois executar esta função.

    Observe que se a tarefa não for suspensa quando esta função for executada, atualmente serão necessários vários minutos para que os serviços de nuvem do Snowflake comecem a programar novamente a execução desta tarefa.

Exemplos

Cancela a execução atual de uma tarefa com um nome que não diferencia maiúsculas de minúsculas:

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

Cancela a execução atual de uma tarefa com um nome que diferencia maiúsculas de minúsculas:

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