Snowflake每分钟调度Task恢复后无次日执行历史问题咨询
Snowflake 分钟级Task次日无执行记录问题排查
首先明确:Snowflake 绑定自定义虚拟仓库的Task没有默认的连续运行时间上限,不会因为运行满24小时自动停止调度,你查不到执行记录基本是以下几个原因导致的:
TASK_HISTORY()查询参数不全导致结果遗漏
不带入参调用information_schema.task_history()时,默认仅返回当前角色有权限查看的、最近100条任务执行记录,没有时间范围过滤。如果你的账号下存在其他高频运行的Task,很容易把你这个IAM_TASK的记录挤出默认返回的结果集;如果次日查询时使用的角色没有TEMP_DB.IAMschema的访问权限,也会完全看不到对应记录。
建议使用带完整过滤条件的语句查询,避免漏结果:
select * from table(information_schema.task_history( scheduled_time_range_start => dateadd('day', -2, current_timestamp()), result_limit => 1000, task_name => 'IAM_TASK' )) where database_name = 'TEMP_DB' and schema_name = 'IAM' order by scheduled_time desc;
- 任务已经进入暂停状态停止调度
Snowflake不会因为Task长时间运行主动暂停,但以下场景会触发任务自动/手动暂停,后续不再产生调度记录:- Task连续执行失败达到默认阈值(连续10次执行失败会自动暂停,避免资源空耗)
- 任务绑定的虚拟仓库
ELT_WHS被删除,或者任务所属角色失去了仓库的USAGE权限、存储过程TEMP_DATA()的执行权限 - 其他拥有Task操作权限的用户手动执行了暂停操作
可以直接执行以下语句查看任务当前状态:
show tasks like 'IAM_TASK' in schema TEMP_DB.IAM;
查看返回结果中的state字段,如果值为suspended说明任务已停止调度,结合suspended_on、last_error_code、last_error_message字段就能定位具体暂停原因。
- 额外说明:如果你创建Task时没有指定自定义warehouse,而是使用Snowflake托管的无服务器Task资源,会有单任务执行超时、账号级配额限制,但你在创建语句中显式指定了
warehouse=ELT_WHS,不受这类规则限制,只要仓库可用、任务处于RESUME状态就会按每分钟的频率持续调度。
内容的提问来源于stack exchange,提问作者coool_sweet
相关产品推荐
相关产品推荐

