SharePoint Timer Service – Die ganze Wahrheit

By | 5. Februar 2018

Der SharePoint Timer Service ist eine fundamentale Komponente, der für zeit gesteuerte/wiederholende Aktionen genutzt wird (Timer Jobs). Deshalb sollte dieser Dienst auf allen SharePoint Servern in einer Farm ausgeführt werden. Sollte der SharePoint Timer Service nicht auf allen Servern in der Farm ausgeführt werden, ist es nur eine Frage der Zeit, wann es zu Problemen, Inkonsistenzen oder anderen unschönen Dingen in der Farm kommt.

Der SharePoint Timer Service ist ein eigener Windows-Dienst und kann dadurch recht einfach gefunden werden:

SharePoint Timer Service

So kann man recht einfach sicherstellen, dass der SharePoint Timer Service korrekt ausgeführt wird. Ansonsten prüft SharePoint natürlich auch selbst, ob der Timer Service auf allen Servern korrekt ausgeführt wird. Sollte dies nicht der Fall sein, erscheint eine entsprechende Meldung in der SharePoint Zentraladministration (Health Analyzer oder auf Deutsch SharePoint-Integritätsanalyse).

Der Timer Service ist allerdings auch für die Ausführung der Regeln zuständig, dessen Ergebnisse im Health Analyzer angezeigt werden. Die Regeln werden zeit gesteuert durch den Timer Service ausgeführt. Diese Regeln können allerdings auch manuell gestartet werden. Solange die Regel auf die Ausführung durch den Timer Service wartet, kann ein erneutes manuelles Starten nicht ausgeführt werden. Der Button ist solange ausgegraut.

Was allerdings, wenn der Button sehr lange ausgegraut bleibt und der zugehörige SharePoint Timer Service korrekt ausgeführt wird? Der Windows-Dienst ist allerdings nur die eine Hälfte der Wahrheit. Die SharePoint Timer Service Instanz ist nämlich genauso wichtig für die Ausführung der Timer Jobs wie der zugrundelegende Windows-Dienst. Die Instanz kann allerdings nur über die SharePoint Management Shell verwaltet werden. Die Instanz wird natürlich nicht durch SharePoint überwacht. 🙂

Das PowerShell Skript zum Prüfen der Instanz sieht folgendermaßen aus:

$farm = Get-SPFarm
$Timers = $farm.TimerService.Instances
$Timers

Die Ausgabe für eine Single Server Farm sieht dann so aus:

Jeder Status ungleich Online deutet darauf hin, dass die Timer Jobs nicht mehr ausgeführt werden. Das Problem kann vor allem dann auftreten, wenn es zu Fehlern oder Problemen bei einem SharePoint Update kam. Die Instanz oder Instanzen können über folgendes Skript wieder zum Leben erweckt werden:

$farm = Get-SPFarm
$disabledTimers = $farm.TimerService.Instances | where {$_.Status -ne "Online"}
if ($disabledTimers -ne $null)
{
  foreach ($timer in $disabledTimers)
  {
    Write-Host "Timer service instance on server " $timer.Server.Name " is not Online. Current status:" $timer.Status
    Write-Host "Attempting to set the status of the service instance to online"
    $timer.Status = [Microsoft.SharePoint.Administration.SPObjectStatus]::Online
    $timer.Update()
  }
}
else
{
  Write-Host "All Timer Service Instances in the farm are online! No problems found"
}

Den zugehörigen Support Artikel von Microsoft findet man hier: https://support.microsoft.com/en-us/help/2616609/administrative-timer-jobs-not-running-after-upgrade

Sollten Timer Jobs also nicht ausgeführt werden, sollte man unbedingt die Instanzen prüfen.

In diesem Sinne,

Happy SharePointing…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.