2013-02-11 14 views
6

Próbuję napisać zapytanie SQL, które mówi mi, czy zadanie SQL zostało uruchomione, czy nie, w oparciu o jego harmonogram. Na przykład, jeśli praca została zaplanowana na godzinę 12:00, a my jesteśmy o 12:05 i nadal nie działa, chcę to wiedzieć. Jaki byłby najlepszy sposób, aby to wykryć?Wykryj zadania, które nie zostały uruchomione zgodnie z harmonogramem

To zdarzyło się w przeszłości, że mieliśmy zadania SQL uruchamiane okresowo i SQL Server ich nie uruchamiał. Aby temu zapobiec, chcielibyśmy uruchomić kwerendę przeciwko SQL Server 2008 R2 i sprawdzić, czy zadanie zostało uruchomione czy nie, a następnie wywołać alert, jeśli nie został uruchomiony.

Dzięki za pomoc!

Odpowiedz

1

Można spróbować procedurę nieudokumentowanych

sys.xp_sqlagent_enum_jobs 

Ta procedura zwraca ostatnie zadanie datę i czas pracy.

1

To zapytanie powie ci szczegóły przebiegu zadania.

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' 

Zgodnie SQL Books Online http://msdn.microsoft.com/en-us/library/ms174997.aspx

run_status

Status wykonywania pracy:

0 = Nie udało

1 = Następca

2 = Ponów

3 = Anulowano

+1

Naprawdę chcę wiedzieć, czy agent pomija zadanie harmonogramu. To zapytanie powie mi, czy zadanie się powiodło, czy nie. – Martin

0

Aby dowiedzieć się lepiej, na których stanowiskach nie ma żadnej historii. Spróbuj uruchomić to zapytanie.

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

domyślnie każde zadanie powinno mieć historię po uruchomieniu.

Powiązane problemy