Denis đã rất thân thiết. Nhưng giải pháp thực tế là một chút hoán đổi. Vì powershell không thể kiểm tra CPU trong một khoảng thời gian, chỉ sử dụng hiện tại, kiểm tra SQL Server phải được sử dụng.
Vì vậy, bước đầu tiên của công việc là chạy tập lệnh PowerShell để kiểm tra xem thời gian hệ thống hiện tại có nằm giữa hai ràng buộc thời gian không. Nếu có, thì tập lệnh powershell không làm gì cả. Công việc SQL Server diễn giải điều này là một thành công.
Sau đó, công việc chuyển sang bước cuối cùng và thực hiện truy vấn cập nhật.
Tuy nhiên, nếu thời gian hiện tại nằm ngoài phạm vi tôi thực hiện Start-Time -s 600
để tạm dừng tập lệnh powershell trong 10 phút (mô phỏng "yêu cầu 5 - 10 phút một lần). Điều này là để giữ cho tác nhân máy chủ SQL không ngừng cố gắng chạy công việc này .
Sau 10 phút, tập lệnh powershell đưa ra một lỗi tùy chỉnh. Vì tôi có $ErrorActionPreference = "Stop"
ở phần đầu của tập lệnh, tập lệnh powershell dừng thực thi sau lỗi. Bước này rất quan trọng.
Vì powershell đã dừng và không trả về, SQL Server Agent diễn giải điều này là một lỗi và sẽ không tiếp tục bước thực hiện truy vấn Cập nhật.
PS Các bạn đã dẫn tôi đi đúng hướng. Nếu tôi có đủ danh tiếng, tôi sẽ nâng cao các bạn.
Chỉnh sửa: Đã thêm 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"
}