ISSUE:
After a Sharepoint migration from version 2016 to 2019, it can happen that timer jobs, which are automatically scheduled, are not executed on all databases available for a web-application.
In our case, the 'immediate alerts' no longer worked, as they pointed to the table 'Mysites' and not 'Intranet' (which is the main one).
Autogenerated jobs from Sharepoint were not present, but were only present for the table 'MySites'. Using the following script, all jobs and all tables in the database are automatically regenerated.
This reprovisions all instances on online, and recreates all scheduled jobs.
$farm = Get-SPFarm
$FarmTimers = $farm.TimerService.Instances
foreach ($FT in $FarmTimers)
{
write-host "Server: " $FT.Server.Name.ToString();
write-host "Status: " $FT.status;
write-host "Allow Service Jobs: " $FT.AllowServiceJobs;
write-host "Allow Content DB Jobs: " $FT.AllowContentDatabaseJobs;"`n"
}
$disabledTimers = $farm.TimerService.Instances | where {$_.Status -ne "Online"}
if ($disabledTimers -ne $null)
{
foreach ($timer in $disabledTimers)
{
Write-Host -ForegroundColor Red "Timer service instance on server " $timer.Server.Name " is NOT Online. Current status:" $timer.Status
Write-Host -ForegroundColor Green "Attempting to set the status of the service instance to online…"
$timer.Provision()
$timer.Start()
write-host -ForegroundColor Red "You MUST now go restart the SharePoint timer service on server " $FT.Server.Name}}
else
{
Write-Host -ForegroundColor Green "All Timer Service Instances in the farm are online. No problems found!"
}
When finished, restart the "Sharepoint Timer Service" on server.
When you return to the administration page, you will see the correctly regenerated jobs.
Great