我想失敗的作業的SQL Server代理無法啓動,或通過SQL腳本運行...如何通過腳本從sql server代理獲取失敗的作業?
4
A
回答
11
我創建了一個視圖獲取失敗的作業在SQL Server
CREATE VIEW dbo.View_Failed_Jobs
AS
SELECT Job.instance_id
,SysJobs.job_id
,SysJobs.name as 'JOB_NAME'
,SysJobSteps.step_name as 'STEP_NAME'
,Job.run_status
,Job.sql_message_id
,Job.sql_severity
,Job.message
,Job.exec_date
,Job.run_duration
,Job.server
,SysJobSteps.output_file_name
FROM (SELECT Instance.instance_id
,DBSysJobHistory.job_id
,DBSysJobHistory.step_id
,DBSysJobHistory.sql_message_id
,DBSysJobHistory.sql_severity
,DBSysJobHistory.message
,(CASE DBSysJobHistory.run_status
WHEN 0 THEN 'Failed'
WHEN 1 THEN 'Succeeded'
WHEN 2 THEN 'Retry'
WHEN 3 THEN 'Canceled'
WHEN 4 THEN 'In progress'
END) as run_status
,((SUBSTRING(CAST(DBSysJobHistory.run_date AS VARCHAR(8)), 5, 2) + '/'
+ SUBSTRING(CAST(DBSysJobHistory.run_date AS VARCHAR(8)), 7, 2) + '/'
+ SUBSTRING(CAST(DBSysJobHistory.run_date AS VARCHAR(8)), 1, 4) + ' '
+ SUBSTRING((REPLICATE('0',6-LEN(CAST(DBSysJobHistory.run_time AS varchar)))
+ CAST(DBSysJobHistory.run_time AS VARCHAR)), 1, 2) + ':'
+ SUBSTRING((REPLICATE('0',6-LEN(CAST(DBSysJobHistory.run_time AS VARCHAR)))
+ CAST(DBSysJobHistory.run_time AS VARCHAR)), 3, 2) + ':'
+ SUBSTRING((REPLICATE('0',6-LEN(CAST(DBSysJobHistory.run_time as varchar)))
+ CAST(DBSysJobHistory.run_time AS VARCHAR)), 5, 2))) AS 'exec_date'
,DBSysJobHistory.run_duration
,DBSysJobHistory.retries_attempted
,DBSysJobHistory.server
FROM msdb.dbo.sysjobhistory DBSysJobHistory
JOIN (SELECT DBSysJobHistory.job_id
,DBSysJobHistory.step_id
,MAX(DBSysJobHistory.instance_id) as instance_id
FROM msdb.dbo.sysjobhistory DBSysJobHistory
GROUP BY DBSysJobHistory.job_id
,DBSysJobHistory.step_id
) AS Instance ON DBSysJobHistory.instance_id = Instance.instance_id
WHERE DBSysJobHistory.run_status <> 1
) AS Job
JOIN msdb.dbo.sysjobs SysJobs
ON (Job.job_id = SysJobs.job_id)
JOIN msdb.dbo.sysjobsteps SysJobSteps
ON (Job.job_id = SysJobSteps.job_id AND Job.step_id = SysJobSteps.step_id)
GO
- 現在執行SELECT語句來查詢失敗的作業
Select * from View_Failed_Jobs
7
這裏是SQL Server 2008中的例子:
SQL Server Agent Job Query Samples
你會發現很多更多的如果你谷歌的「SQL服務器失敗的工作」,但不幸的是大多數的例子並不說他們是否適用於SQL Server 2008,例如this one。
編輯:
提示:當您從第一個鏈接複製代碼,使用「查看源文件」按鈕:
有一個「複製到剪貼板」按鈕那麼我首先嚐試了一下,但是它在SQL Server中抱怨的SQL代碼中生成了一些HTML標記(並且不讓我執行查詢)。
0
相關問題
- 1. SQL Server代理作業失敗
- 2. Sql Server代理作業失敗
- 3. SQL代理作業失敗
- 4. SQL代理作業失敗
- 5. 通過腳本遠程創建SQL Server代理作業
- 6. 如何使SQL Server代理作業步驟失敗故意
- 7. 2005年從SQL代理作業運行腳本時Powershell腳本爲空SQL Server
- 8. 無法從sql server代理作業運行sharepoint powershell腳本
- 9. SQL Server代理中的作業錯誤啓動失敗
- 10. 發送SQL Server代理程序作業失敗的摘要
- 11. SQL 2008的SQL Server代理作業,如何填充的通知
- 12. 如何在SQL作業步驟失敗時執行SQL腳本
- 13. 由於MS DTC導致SQL Server代理作業失敗
- 14. SQL Server添加作業代理T-SQL腳本問題
- 15. SQL Server代理作業每週失敗一次,'用戶登錄失敗... \ $ duplicate-1889'
- 16. 如何調試SQL Server代理作業?
- 17. 如何備份SQL Server代理作業?
- 18. 如何備份SQL Server代理作業?
- 19. SQL Server代理作業
- 20. 從C運行Sql Server代理作業#
- 21. 如何在SQL Server代理作業中記錄成功和失敗
- 22. 所有SQL代理作業上的腳本丟失
- 23. 如何查找SQL Server代理作業中的作業數量?
- 24. SSIS包含通過SQL Server代理作業的GnuPG加密
- 25. Python腳本計劃通過Cron作業失敗
- 26. SQL Server代理不報告PowerShell腳本中的未捕獲異常失敗
- 27. 如何從java代碼啓動sql server代理作業
- 28. 如何使用C#從SQL Server 2008的作業生成腳本?
- 29. 從SQL Server代理調用的SSIS包的C#腳本組件錯誤作業
- 30. 通過SQL Server代理作業調用PowerShell腳本 - 啓動腳本不會得到輸出
應該指出,該腳本只列出了上次執行失敗的作業,並且只列出了最後一次失敗。如果它隨後成功,則該腳本根本不顯示它。這可能是也可能不是你想要的。 – paulH