Hangfire:定时任务CRON表达式在数据库中的存储位置及查询方法
HangFire定时任务CRON表达式的存储位置及SQL查询方法
HangFire的定时任务(Recurring Job)的CRON表达式并不存储在HangFire.Set表,而是存在HangFire.Hash表中:
- 每个Recurring Job对应
Hash表中的多条记录(每条记录存储一个属性),其中存储CRON表达式的记录Field值为Cron,对应的Key格式为recurring-jobs:{任务ID}。
你提供的SQL查询的是Set表,这是错误的——Set表仅用于存储Recurring Job的索引集合,不包含CRON表达式的具体内容。正确的SQL语句应该查询Hash表,示例如下:
SELECT -- 提取任务ID(去掉前缀'recurring-jobs:') SUBSTRING(h.[Key], 16, LEN(h.[Key]) - 15) AS JobId, h.Value AS CronExpression, -- 如需其他属性,可添加对应的Field查询 (SELECT Value FROM HangFire.Hash WHERE [Key] = h.[Key] AND Field = 'JobType') AS JobType FROM HangFire.Hash h WHERE h.Field = 'Cron' AND h.[Key] LIKE 'recurring-jobs:%'
如果只需要所有CRON表达式及对应的任务标识,简化版SQL:
SELECT h.[Key] AS FullJobKey, h.Value AS CronExpression FROM HangFire.Hash h WHERE h.Field = 'Cron' AND h.[Key] LIKE 'recurring-jobs:%'
内容的提问来源于stack exchange,提问作者Jacek
相关产品推荐
相关产品推荐

