EXECUTE TASK

手动触发任务(独立任务或 任务图 中的根任务)的异步单次运行,不受为任务定义的计划限制。

成功运行根任务会触发任务图中子任务的级联运行(基于前置任务的完成),就像根任务按照其定义的计划运行一样。

此外,您可以手动触发重新执行先前失败的任务。

另请参阅:

CREATE TASKDROP TASKSHOW TASKS

语法

EXECUTE TASK <name>

EXECUTE TASK <name> RETRY LAST
Copy

参数

name

要运行的独立任务或根任务的标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。

RETRY LAST

重新执行 任务图 中名为 name 的上次失败的任务,从任务失败的位置重新启动。

要重新执行任务,必须满足以下条件:

  • 最后运行的任务图必须处于 FAILED 或 CANCELED 状态。

  • 任务图自上次运行以来不得有过修改。

  • 任务图必须在过去 14 天内执行过或重试过。

要查看任务历史记录,请参阅 TASK_HISTORY 表函数或 Snowsight 任务历史记录

备注

RETRY LAST 创建一个新的图形运行,该运行从上次失败的任务处开始执行。

具体而言,所有 FAILED 或 CANCELED 任务运行都会立即重新执行,并且如果所有前置任务都成功执行,则会计划关联的子任务。

此外,重试后生成的新任务图运行的 ATTEMPT NUMBER 将比先前失败的任务图多运行多一次,并且与重试后或原始任务图运行具有相同的 GRAPH_RUN_GROUP_ID。

使用说明

  • 执行任务需要对该任务具有 OWNERSHIP 或 OPERATE 权限。

    当 EXECUTE TASK 命令触发任务运行时,Snowflake 会验证对任务具有 OWNERSHIP 权限的角色是否也具有分配给该任务的仓库的 USAGE 权限,以及全局 EXECUTE TASK 权限;如果没有,则会产生错误。

    任务始终使用原始所有者角色的权限运行,即使具有 OPERATE 权限的其他角色使用 EXECUTE TASK 来运行任务也是如此。

  • SQL 命令只能执行独立任务或任务图中的根任务。如果输入子任务,则该命令将返回用户错误。

  • 手动执行独立任务或根任务将建立该任务的版本。独立任务或整个任务图使用此版本完成其运行。有关任务版本的详细信息,请参阅 任务运行的版本控制

  • 恢复任务的情况下运行暂停的根任务;在执行此 SQL 命令之前,无需显式恢复根任务。但是,EXECUTE TASK 不会 自动恢复任务图中的子任务。该命令将跳过任何暂停的子任务。

    要以递归方式恢复与任务图中根任务关联的所有相关任务,请查询 SYSTEM$TASK_DEPENDENTS_ENABLE 函数,而不是单独启用每个任务(使用 ALTER TASK ...RESUME)。

    作为测试新的或修改后的任务图的最佳实践,将根任务设置为按其预期的生产计划运行,但将其保留在暂停状态。成功测试任务图后,恢复根任务。请注意,您必须在用于测试的任务图中恢复任何暂停的子任务;否则,运行任务图期间将跳过它们。

  • 如果任务的实例没有在运行,则会立即开始新的运行。

  • 如果计划了另一个实例(即,如果任务在 TASK_HISTORY 输出中显示 SCHEDULED 状态),则请求的运行将取代计划的运行。使用当前时间戳作为计划时间,请求的运行将立即开始。

  • 如果任务或任务图当前正在排队或正在执行(即,如果任务在 TASK_HISTORY 输出中显示 EXECUTING 状态),则当前运行继续使用执行命令时的最新 任务版本。然后,计划开始新的运行,具体时间视任务类型而定:

    • 对于独立任务,计划在当前运行完成后开始新的运行。

    • 对于任务图:

      • 如果 ALLOW_OVERLAPPING_EXECUTION = FALSE(默认),则计划在当前任务图完成后开始新的运行。

      • 如果 ALLOW_OVERLAPPING_EXECUTION = TRUE,并且当前正在执行的任务是根任务,则计划在根任务完成后开始新的运行。

      • 如果 ALLOW_OVERLAPPING_EXECUTION = TRUE,并且当前正在执行的任务是子任务,则立即开始新的运行。

    如果在下一次计划运行开始之前再次执行 EXECUTE TASK 命令,则请求的运行将取代计划的运行。

  • 如果任务失败并出现意外错误,您可以收到有关该错误的通知。有关配置任务错误通知的更多信息,请参阅 启用任务通知

  • 要查看任务信息,您可以:

    • 打开 Snowsight,选择 Monitoring » Task History

    • 调用 COMPLETE_TASK_GRAPHS 表函数,并检查结果。

示例

手动触发名为 mytask 的任务的运行:

EXECUTE TASK mytask;
Copy
语言: 中文