簡體   English   中英

服務器關閉時如何處理SQL Server代理作業

[英]How to handle SQL Server Agent jobs when server is down

我們有一個每小時運行一次的SQL Server代理作業。 每月兩次,服務器重新啟動以進行Microsoft修補。 重新啟動由不同的部門完成,因此我們只知道它將在特定日期的4小時窗口期間發生。 當服務器恢復時,有沒有辦法在這段時間內自動啟動任何未啟動的作業?

據我所知,沒有“內置”的方式。 但也許你可以做另一個工作,它檢查SQL Server的最后重啟日期。

SELECT sqlserver_start_time FROM sys.dm_os_sys_info

然后,如果它檢測到服務器不久前重新啟動,它可以檢查您的作業上次運行的時間。

select j.job_id, name,  last_run_date, last_run_time, last_run_outcome, last_run_duration 
from msdb.dbo.sysjobs as j (NoLOCK)          
inner join msdb.dbo.sysjobservers as s (NOLOCK) on s.job_id = j.job_id
where enabled=1 

如有必要,請告訴SQL立即啟動作業

EXEC msdb.dbo.sp_start_job N'YourJobName'

sp_procoption系統存儲過程可用於在SQL Server服務啟動時運行一個(或多個)用戶定義的存儲過程。 必須master數據庫中創建存儲過程以供此系統SP使用。 然后,您可以創建一個存儲過程,以查詢msdb表以查找非活動的特定(或任何發布中描述的)作業,然后使用sp_start_job運行關聯的作業。 必須啟用scan for startup procs服務器配置選項的scan for startup procs才能使用sp_procoption ,但是執行此存儲過程會自動啟用此命令,您可以使用sp_configure進行驗證。 下面是添加通過sp_procoption啟動SQL Server服務時要執行的存儲過程的示例。

USE [master]

EXEC SP_PROCOPTION @ProcName = 'uspCheckInactiveJobs', @OptionName = 'startup', @OptionValue = 'on';  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM