2008-09-24 95 views
2

我實際上正在使用SQL 2005中的SP。使用SP我創建了一個作業並且計劃了一段特定的時間。這些工作需要至少5到10分鐘才能完成,因爲數據庫非常龐大。但我不知道如何檢查作業的狀態。我想知道它是否已成功完成或執行中是否有任何錯誤。在例外我也返回適當的錯誤代碼。但我不知道我在哪裏可以檢查這個錯誤代碼。SQL作業狀態

回答

3

這是我能找到的,也許它解決您的問題:

  1. SP來得到當前的工作activiity。
exec msdb.dbo.sp_help_jobactivity @job_id = (your job_id here) 

可以執行該SP和結果放在一個臨時表,並從那裏得到所需的結果。

否則看看這些表:

  • msdb.dbo.sysjobactivity

  • msdb.dbo.sysjobhistory

運行下面看到它們之間的關聯表。

EXEC sp_helptext的sp_help_jobactivity

0

--copy在查詢analizer和使用查詢 EXEC msdb.dbo.sp_start_job格式化正確,所以你可以easyly理解 - 若要執行你的任務(工作) @job_name ='作業名稱',@ server_name =服務器名稱 - 執行查詢以檢查它是否已完成 聲明@JobId作爲varchar(36) 從sysjobs中選擇@JobId = job_id其中name ='您的作業名稱' 將@JobStatus聲明爲int set @JobStatus = -1 雖然@JobStatus < = -1 開始 --Provide根據純滯後您的工作 選擇@JobStatus = ISNULL(run_status,-1) 從sysjobactivity JA,sysjobhistory JH 其中JA.job_history_id = JH.instance_id和JA.job_id = @JobId 結束 選擇@JobStatus

空=運行 1 = Fininshed成功 0 =完成了錯誤

--Once你的工作將fininsh你會得到結果

0

我得到了一個更好的代碼從here

Use msdb 
go 

select distinct j.Name as "Job Name", j.description as "Job Description", h.run_date as LastStatusDate, 
case h.run_status 
when 0 then 'Failed' 
when 1 then 'Successful' 
when 3 then 'Cancelled' 
--when 4 then 'In Progress' 
end as JobStatus 
from sysJobHistory h, sysJobs j 
where j.job_id = h.job_id and h.run_date = 
(select max(hi.run_date) from sysJobHistory hi where h.job_id = hi.job_id) 
order by 1 
+1

警告:4(進行中)不會發生(http://msdn.microsoft.com/en-us/library/ms174997.aspx) – 2010-05-26 15:18:24