Snowflake配置的周度、月度CRON定时任务未正常运行问题求助
排查步骤
确认任务状态是否正常开启
执行查询SHOW TASKS LIKE '%_JOB';,查看返回结果的state字段,必须为started才会正常触发。注意:执行
CREATE OR REPLACE TASK后,任务默认会重置为suspended状态,必须手动执行ALTER TASK ... RESUME才会生效。你贴出的月度任务MONTHLY_JOB的开启语句是单独拆分的,大概率是创建完任务后漏执行了这句,导致任务一直处于挂起状态。验证CRON规则与时区是否符合预期
先核对Snowflake侧的CET时区时间是否和你预期一致:SELECT CURRENT_TIMESTAMP AT TIME ZONE 'CET' AS 当前CET时间;再用内置函数验证两个任务的下一次触发时间是否符合预期:
-- 验证周任务下次触发时间 SELECT CronTime('0 5 * * 1', 'CET') AS 周任务下次触发时间; -- 验证月任务下次触发时间 SELECT CronTime('0 5 1 * *', 'CET') AS 月任务下次触发时间;如果返回的时间和你预期的周一/每月1号凌晨5点不符,再调整CRON表达式。
查看任务执行历史排查报错
任务触发后如果执行失败(比如权限不足、SQL报错),也会给你造成“没触发”的错觉,可以直接查任务的运行日志:-- 查周任务近7天运行记录 SELECT * FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY( TASK_NAME => 'WEEKLY_JOB', SCHEDULED_TIME_RANGE_START => DATEADD('day', -7, CURRENT_TIMESTAMP()) )) ORDER BY SCHEDULED_TIME DESC; -- 查月任务近31天运行记录 SELECT * FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY( TASK_NAME => 'MONTHLY_JOB', SCHEDULED_TIME_RANGE_START => DATEADD('day', -31, CURRENT_TIMESTAMP()) )) ORDER BY SCHEDULED_TIME DESC;重点看返回结果的
ERROR_CODE和ERROR_MESSAGE字段,常见报错原因包括:- 任务绑定的
compute_wh不存在,或任务所属角色没有该仓库的USAGE权限 - 任务所属角色没有目标表的
INSERT权限 INSERT语句本身语法错误、表结构变更导致字段不匹配- 仓库配额耗尽、被手动挂起无法启动
- 任务绑定的
确认任务归属是否正确
执行SHOW TASKS IN ACCOUNT LIKE '%_JOB';查看全账号下的同名任务,确认你操作的是目标 schema/数据库下的任务,避免错改了其他路径下的同名任务。
内容的提问来源于stack exchange,提问作者timy
相关产品推荐
相关产品推荐

