2012-10-23 57 views
5

我曾使用以下SQL列出所有沒有停止日期的作業。我認爲我可以用它來查找所有活動的工作。我注意到的是,我在這個表中有一些null stop_execution_date的作業。一些相同的工作(相同的job_id)在此表中重複多次。具有空停止日期的工作意味着什麼?

select job.*, activity.* 
from msdb.dbo.sysjobs_view job 
inner join msdb.dbo.sysjobactivity activity 
on (job.job_id = activity.job_id) 
where run_Requested_date is not null and stop_execution_date is null 

當我對這些作業運行EXEC msdb.dbo.sp_help_job,我看到他們當前的執行狀態爲空閒。

這些工作代表什麼?這是當工作沒有被正確殺死時的行爲嗎?

回答

4

每次SQL代理啓動時,它會在syssessions中放入一個新行,隨後任何運行的作業都將在sysjobactivity中獲得該session_id。對於你的工作有一個空停止日期,我的猜測是他們不是「當前」會話,這意味着他們仍然在代理停止時運行。

+2

我同意關於** syssessions **的評論 - 有必要確定哪些工作目前正從** sysjobactivity **運行。但是,當前會話中的空停止日期表示作業當前正在運行。 – efesar

+1

在原始問題中,海報表示sp_help_job顯示作業爲空閒狀態。但是你是對的,那是結束日期爲NULL的另一種情況。 –