回答:
CPU使用率が20%を下回っています
Idle CPU Conditionの [詳細プロパティ]ウィンドウからSQLエージェントを構成します。「平均CPU使用率が下回る」値を20%に設定し、ジョブが実行されるまでにそのレベルを維持する必要がある時間を設定します。
その後、ウィンドウ内にある場合はupdateコマンドを発行して、ジョブステップがウィンドウ内にあることを確認するためにジョブステップを構成します。
5分ごとの要件は、この設定では正確に満たされない場合があります。このスケジュールタイプでは、ジョブが実行される頻度を示すものは何も見つかりませんでした。[たとえば、アイドルCPU状態で「このレベルを下回る」を30秒に設定した場合、ジョブは頻繁に実行されますか?]これまでこの構成を使用したことがないため、少しテストが必要になります。機会があれば、それが何であるかを見ることができ、この答えを更新します。
デニスはとても親しかった。しかし、実際のソリューションは少し交換されました。powershellは一定期間CPUをチェックできないため、現在の使用状況のみを確認できるため、SQL Serverチェックを使用する必要がありました。
したがって、ジョブの最初のステップは、現在のシステム時刻が2つの時間制約の間にあるかどうかを確認するPowerShellスクリプトを実行することでした。そうであれば、PowerShellスクリプトは何もしません。SQL Serverジョブは、これを成功と解釈します。
次に、ジョブは最後のステップに進み、更新クエリを実行します。
ただし、現在の時刻が範囲外の場合は、Start-Time -s 600
Powershellスクリプトを10分間一時停止するために実行します(「これまでに5〜10分の要件」をシミュレートします)。これは、SQLサーバーエージェントが常にこのジョブを実行しようとしないようにするためです。 。
10分後、powershellスクリプトはカスタムエラーをスローします。$ErrorActionPreference = "Stop"
スクリプトの最初にあるので、Powershellスクリプトはエラー後に実行を停止します。このステップは非常に重要です。
powershellが停止して復帰しなかったため、SQL Serverエージェントはこれを失敗と解釈し、更新クエリを実行するステップに進みません。
PS皆さん、私を正しい方向に導きました。私に十分な評判があったら、皆さんに賛成票を投じます。
編集:Powershellスクリプトを追加
$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"
}