2013-02-11 27 views
6

Tôi đang cố viết một truy vấn SQL cho tôi biết liệu một công việc SQL có chạy hay không dựa trên lịch biểu của nó. Ví dụ, nếu một công việc được lên kế hoạch để chạy lúc 12:00 PM và chúng tôi là 12:05 PM và nó vẫn chưa chạy, tôi muốn biết điều đó. Cách tiếp cận tốt nhất để phát hiện ra điều đó là gì?Phát hiện các công việc chưa chạy theo lịch

Đã xảy ra trong quá khứ rằng chúng tôi đã có các công việc SQL để chạy định kỳ và SQL Server đã không chạy chúng. Để ngăn chặn điều đó, chúng tôi muốn chạy một truy vấn đối với SQL Server 2008 R2 và kiểm tra xem công việc có chạy hay không và sau đó kích hoạt cảnh báo nếu nó không chạy.

Cảm ơn sự giúp đỡ!

Trả lời

1

Bạn có thể thử thủ tục không có giấy tờ

sys.xp_sqlagent_enum_jobs 

Thủ tục này trả về công việc cuối cùng ngày chạy và thời gian.

1

Truy vấn này sẽ cho bạn biết chi tiết chạy công việc.

Select hist.run_date,hist.run_status,hist.run_time 
from msdb..sysjobs jb 
inner join msdb..sysjobhistory hist 
on jb.job_id = hist.job_id 
where jb.name = 'MyJob' 

Theo Sql Books Online http://msdn.microsoft.com/en-us/library/ms174997.aspx

run_status

Tình hình thực hiện công việc:

0 = Không

1 = Kế

2 = Thử lại

3 = Đã hủy

+1

Tôi thực sự muốn biết liệu Đại lý đã bỏ qua một công việc lịch biểu hay chưa. Truy vấn này sẽ cho tôi biết nếu công việc đã thành công hay không. – Martin

0

Để tìm hiểu tốt hơn về công việc nào không có tiền sử. Thử chạy truy vấn này.

select name from msdb.dbo.sysjobs where job_id not in (select job_id from sdb.dbo.sysjobhistory) and enabled = 1 

theo mặc định, mỗi công việc phải có lịch sử khi thực thi.

Các vấn đề liên quan