2012-05-14 52 views

回答

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 
+0

應該指出,該腳本只列出了上次執行失敗的作業,並且只列出了最後一次失敗。如果它隨後成功,則該腳本根本不顯示它。這可能是也可能不是你想要的。 – paulH

7

這裏是SQL Server 2008中的例子:
SQL Server Agent Job Query Samples

你會發現很多更多的如果你谷歌的「SQL服務器失敗的工作」,但不幸的是大多數的例子並不說他們是否適用於SQL Server 2008,例如this one


編輯:

提示:當您從第一個鏈接複製代碼,使用「查看源文件」按鈕: view source

有一個「複製到剪貼板」按鈕那麼我首先嚐試了一下,但是它在SQL Server中抱怨的SQL代碼中生成了一些HTML標記(並且不讓我執行查詢)。

+2

鏈接腐爛。以下是[SQL Server代理作業查詢示例]的更新鏈接(http://www.toadworld.com/platforms/sql-server/w/wiki/10351.sql-server-agent-job-query-samples.aspx) 。 – superEb

+0

內容也腐爛了。某些查詢無法按預期工作。 – wp78de

0

您可以使用SQL試劑 - 使用快捷 - >工作活動監視器。 enter image description here

相關問題