Sql-Server
顯示失敗的 sql 作業的查詢是什麼
顯示失敗的sql作業的查詢是什麼,以便我可以通過一個查詢獲得所有失敗的作業資訊
我認為您不會真正通過一次查詢獲得“所有”作業資訊,因為可以將作業配置為轉到輸出文件。輸出文件有時可以獲得比報告或寫入
msdb
表中更多的資訊。但是,通過 SSMS 查看作業歷史記錄找到的視圖可以使用此查詢提取以僅返回失敗的作業(例如,如果作業有 2 個步驟並且第二個失敗,則此查詢將返回兩個步驟):
select j.name ,js.step_name ,jh.sql_severity ,jh.message ,jh.run_date ,jh.run_time FROM msdb.dbo.sysjobs AS j INNER JOIN msdb.dbo.sysjobsteps AS js ON js.job_id = j.job_id INNER JOIN msdb.dbo.sysjobhistory AS jh ON jh.job_id = j.job_id AND jh.step_id = js.step_id WHERE jh.run_status = 0
您可以通過 sql server 中可用的標準報告獲取此資訊:
右鍵點擊 SQL Server 代理 > 標準報告,然後選擇所需的報告,例如作業執行“失敗的或花費大量時間的”。根據需要選擇報告:
要麼,
您可以使用以下腳本查找過去 24 小時內失敗的作業:
-- Variable Declarations DECLARE @FinalDate INT; SET @FinalDate = CONVERT(int , CONVERT(varchar(10), DATEADD(DAY, -1, GETDATE()), 112) ) -- Yesterday's date as Integer in YYYYMMDD format -- Final Logic SELECT j.[name], s.step_name, h.step_id, h.step_name, h.run_date, h.run_time, h.sql_severity, h.message, h.server FROM msdb.dbo.sysjobhistory h INNER JOIN msdb.dbo.sysjobs j ON h.job_id = j.job_id INNER JOIN msdb.dbo.sysjobsteps s ON j.job_id = s.job_id AND h.step_id = s.step_id WHERE h.run_status = 0 -- Failure AND h.run_date > @FinalDate ORDER BY h.instance_id DESC;
如果您需要將資訊作為報告,請使用此連結中的程式碼