- Catégories :
Fonctions système (Contrôle du système)
SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS¶
Annule une exécution de la tâche spécifiée que le système a déjà commencé à traiter (c’est-à-dire une exécution avec un statut EXECUTING dans la sortie TASK_HISTORY).
Syntaxe¶
SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS( '<task_name>' )
Arguments¶
task_name
Nom de la tâche.
Notes sur l’utilisation¶
Seul le propriétaire de la tâche (c’est-à-dire le rôle disposant du privilège OWNERSHIP sur la tâche) ou un rôle disposant du privilège OPERATE sur la tâche peut appeler cette fonction.
task_name
est une chaîne, elle doit donc être placée entre guillemets simples :Le nom complet doit être placé entre guillemets simples, y compris la base de données et le schéma (si le nom est entièrement qualifié), c’est-à-dire
'<db>.<schema>.<task_name>'
.Si le nom de la tâche est sensible à la casse ou comprend des caractères spéciaux ou des espaces, des guillemets doubles sont nécessaires pour traiter la casse ou les caractères. Les guillemets doubles doivent être placés entre guillemets simples, par exemple :
'"<task_name>"'
.
Cette fonction renvoie un message de réussite avant que l’exécution en cours de la tâche spécifiée ne soit effectivement annulée.
Si l’exécution en cours de la tâche spécifiée est presque terminée, cette fonction peut ne pas annuler l’exécution.
Cette fonction annule uniquement l’exécution en cours de la tâche spécifiée. D’autres tâches dans un graphique de tâches qui inclut cette tâche peuvent également être en cours d’exécution. Pour annuler ces exécutions, vous devez appeler cette fonction et spécifier le nom de chaque tâche enfant supplémentaire séparément.
Si une tâche est remplacée à l’aide de CREATE OR REPLACE TASK, cette fonction ne pourra pas annuler les exécutions en cours de la tâche précédente.
Pour arrêter l’exécution d’une tâche en cours après l’avoir remplacée par CREATE OR REPLACE TASK :
Recherchez l’ID de la requête de l’exécution en cours ; par exemple :
select name, query_id, state, scheduled_time, error_message from table(information_schema.task_history(task_name => 'my_task'));
Annulez la requête en utilisant la fonction SYSTEM$CANCEL_QUERY avec l’ID de la requête , par exemple :
select system$cancel_query('query_id');
Surveillez l’exécution de la tâche pendant quelques secondes jusqu’à ce que l’annulation se termine, par exemple :
select name, query_id, state, scheduled_time, error_message from table(information_schema.task_history(task_name => 'my_task'));
Pour vérifier si l’exécution d’une tâche a été annulée ou terminée, ou si des tâches enfants sont en cours d’exécution, interrogez la fonction TASK_HISTORY.
Pour éviter le démarrage d’exécutions de la tâche, nous vous recommandons tout d’abord de suspendre la tâche (à l’aide de ALTER TASK … SUSPEND) et d’exécuter ensuite cette fonction.
Notez que si la tâche n’est pas suspendue lorsque cette fonction est exécutée, plusieurs minutes sont actuellement nécessaires pour que les services Cloud de Snowflake reprennent la planification des exécutions de cette tâche.
Exemples¶
Annule l’exécution en cours d’une tâche dont le nom n’est pas sensible à la casse :
SELECT SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS('mydb.myschema.mytask');
Annule l’exécution en cours d’une tâche dont le nom est sensible à la casse :
SELECT SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS('mydb.myschema."myTask"');