You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SharePoint 2016 自定义Timer Job未在Job Definition中显示问题咨询

SharePoint 2016 Timer Job 异常消失问题解决方案

现象说明

包含5个Timer Job类的场解决方案每次修改代码重新部署后,随机1个Job不在Job Definition中显示,1个月后自动恢复;新建解决方案的Timer Job部署后也无法显示,相关截图如下:

  • 作业列表截图:作业列表截图
  • Job Definition截图:Job Definition截图

触发原因

  • 注册逻辑冲突:Timer Job注册时未清理旧实例,重复注册导致WSS_Config数据库中Job记录冲突,系统随机将冲突记录标记为隐藏失效。1个月为SharePoint场配置缓存的默认自动清理周期,到期后失效记录被清理,Job自动恢复显示。
  • 缓存同步失败:场中多台服务器的SPTimerV4服务缓存不一致,新部署的Job元数据未同步到所有服务器,导致Job加载失败不显示。
  • Feature上下文错误:注册Timer Job的Feature作用域配置错误,或激活事件中未指定正确的SPFarm/SPWebApplication上下文,导致Job未关联到正确的父级对象,被系统判定为无效。
  • 程序集部署异常:解决方案程序集未正确部署到所有场服务器的GAC,或新旧版本程序集共存,Job加载时找不到对应程序集而不显示。

排查解决路径

  • 第一步:修复Timer Job注册逻辑

    每个Timer Job必须使用唯一GUID作为ID,注册前先查询是否存在同名/同ID的旧Job,存在则先删除再注册,参考代码:
    public override void FeatureActivated(SPFeatureReceiverProperties properties)
    {
        SPWebApplication webApp = properties.Feature.Parent as SPWebApplication;
        string jobName = "CustomTimerJob_01";
        // 清理旧Job
        var oldJob = webApp.JobDefinitions.FirstOrDefault(j => j.Name == jobName);
        if (oldJob != null)
        {
            oldJob.Delete();
        }
        // 注册新Job
        CustomTimerJob newJob = new CustomTimerJob(jobName, webApp);
        SPMinuteSchedule schedule = new SPMinuteSchedule();
        schedule.BeginSecond = 0;
        schedule.EndSecond = 59;
        schedule.Interval = 15;
        newJob.Schedule = schedule;
        newJob.Update();
    }
    
  • 第二步:清理场配置缓存

    在所有场服务器上执行以下操作:
    1. 停止 SPTimerV4 服务
    2. 运行SharePoint命令行管理程序,执行 Clear-SPConfigCache 命令清空配置缓存
    3. 重启 SPTimerV4 服务,等待5分钟后检查Job是否恢复显示
  • 第三步:验证程序集部署状态

    检查所有场服务器的GAC路径 C:\Windows\Microsoft.NET\assembly\GAC_MSIL,确认解决方案对应的程序集版本一致,不存在旧版本残留,如有残留手动删除后重新部署解决方案。
  • 第四步:检查配置数据库记录

    备份WSS_Config数据库后,执行SQL查询查找对应Job的记录,确认Status字段值为0(正常状态),如果值为3(失效)可手动删除该记录,之后重新激活对应Feature注册Job。

应急恢复方案

无需等待1个月自动恢复,直接重新部署解决方案,部署前先卸载旧版本:

  1. 执行 Uninstall-SPSolution -Identity 解决方案名称.wsp -AllWebApplications
  2. 等待卸载完成后执行 Install-SPSolution -Identity 解决方案名称.wsp -GACDeployment -AllWebApplications
  3. 重启所有场服务器的SPTimerV4服务,Job即可恢复显示。

内容的提问来源于stack exchange,提问作者Hassan Rasool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:54:05