SharePoint计时器作业正在运行但未执行

时间:2015-02-03 15:36:51

标签: c# sharepoint sharepoint-2010 sharepoint-2013 sharepoint-timer-job

此功能的作用域是网站集级别。激活该功能后,将在Web应用程序中创建计时器作业,其通用名称包括它应运行的网站集URL。理论上,当停用网站集中的功能时,它会在那里停止执行,但任何在其他网站集上激活的其他计时器作业功能仍将运行。

using Microsoft.SharePoint
using Microsoft.SharePoint.Administration

class DailyAlerts() : SPJobDefinition
{
   public DailyAlerts() : base() { }

   public DailyAlerts(string jobName, SPWebApplication webApp) : base(jobName, webApp, null, SPJobLockType.Job)
   {
      this.Title = jobName;
   }

   public override void Execute(Guid targetInstanceId)
   {
      // CHANGE THE SITE COLLECTION'S ROOT WEB SITE DESCRIPTION TO THE CURRENT TIME
   }
}

部署解决方案并在一个网站集上激活后,该作业从未执行任何自定义代码。这篇文章帮助解决了这个问题: http://www.wahidsaleemi.com/2009/08/sharepoint-timer-jobs-not-running/。停止SP计时器服务器,删除缓存的XML文件并启动服务后,激活的网站集计时器作业将完美执行。

但是,在其他网站集上激活自定义计时器功能会导致该特定网站集的计时器作业未执行的初始问题。第一个计时器作业(发布清除缓存)仍然可以正常工作。

由于某些用户可以通过控制打开/关闭功能,因此您可以看到这会让人感到沮丧。制作新的网站集时,必须激活该功能,但直到...缓存被清除后才会运行?我在这里缺少什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

可以使用PowerShell重置该服务,我建议对该功能进行描述,只是说功能完整功能在第二天才会显现。

获取您的功能,以便在服务器场或网络应用级别更新属性包变量。

写一个powershell脚本然后扫描变量,如果变量等于true则运行脚本并通知某人重启。显然将变量重置为原来的变量。将此脚本绑定到其中一个SP服务器的任务计划程序,以便在夜间远离任何备份和搜索作业运行一次。这意味着如果您需要手动启动它,您也可以通过任务调度程序执行此操作!

这将意味着该过程是自动化的,但您只需强制计时器作业在需要时重新启动。

干杯 Truez