Denis estava muito perto. Mas a solução real foi um pouco trocada. Como o PowerShell não pode verificar a CPU por um período, apenas o uso atual, a verificação do SQL Server teve que ser usada.
Portanto, minha primeira etapa do trabalho foi executar um script do PowerShell que verifica se a hora atual do sistema está entre as duas restrições de tempo. Se for, o script PowerShell não faz nada. O trabalho do SQL Server interpreta isso como um sucesso.
Em seguida, o trabalho passa para a última etapa e executa a consulta de atualização.
Se, no entanto, o horário atual estiver fora do intervalo, execute uma Start-Time -s 600
para pausar o script do PowerShell por 10 minutos (simulando o requisito "uma vez a cada 5 a 10 minutos). Isso evita que o agente do servidor SQL tente constantemente executar esse trabalho. .
Após 10 minutos, o script do PowerShell gera um erro personalizado. Como eu tenho $ErrorActionPreference = "Stop"
no início do script, o script do PowerShell para de ser executado após o erro. Este passo é muito importante.
Como o powershell parou e não retornou, o SQL Server Agent interpreta isso como uma falha e não continuará na etapa que executa a consulta Atualização.
PS Vocês me levaram na direção certa. Se eu tivesse reputação suficiente, eu votaria em vocês.
Edit: Adicionado Powershell Script
$ErrorActionPreference = "Stop"
$StartTime = Get-Date "12:00 AM"
$EndDate = Get-Date "05:00 AM"
$CurrentDate = Get-Date
$ExecuteJob = $StartTime -lt $CurrentDate -and $EndDate -gt $CurrentDate
if(!$ExecuteJob){
Start-Sleep -s 600
throw "Current Time not within Server downtime"
}