2013-02-11 16 views
6

के रूप में नहीं चल रहे हैं, मैं एक SQL क्वेरी लिखने की कोशिश कर रहा हूं जो मुझे बताए कि SQL प्रोग्राम चालू है या नहीं, इसके शेड्यूल पर आधारित है। उदाहरण के लिए, यदि नौकरी 12:00 बजे चलाने की योजना बनाई गई थी और हम 12:05 बजे हैं और यह अभी भी नहीं चल रहा है, तो मैं उसे जानना चाहता हूं। इसका पता लगाने का सबसे अच्छा तरीका क्या होगा?उन नौकरियों का पता लगाएं जो अनुसूचित

यह अतीत में हुआ था कि हमारे पास समय-समय पर चलाने के लिए एसक्यूएल नौकरियां थीं और SQL सर्वर उन्हें नहीं चला था। इसे रोकने के लिए, हम SQL Server 2008 R2 के विरुद्ध एक क्वेरी चलाने के लिए और यह जांचना चाहते हैं कि नौकरी चल रही है या नहीं और फिर यदि कोई रन नहीं चला है तो उसे अलर्ट ट्रिगर करें।

सहायता के लिए धन्यवाद!

उत्तर

1

आप गैर-दस्तावेजी प्रक्रिया

sys.xp_sqlagent_enum_jobs 

यह प्रक्रिया कोशिश कर सकते हैं रिटर्न काम पिछले रन की तारीख और समय।

1

यह क्वेरी आपको नौकरी चलाने के विवरण बताएगी।

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' 

के अनुसार Sql पुस्तकें ऑनलाइन http://msdn.microsoft.com/en-us/library/ms174997.aspx

run_status

काम निष्पादन की स्थिति:

0 = विफल

1 = सफल

2 = पुन: प्रयास करें

3 = रद्द

+1

मैं वास्तव में जानना चाहता हूं कि एजेंट ने शेड्यूल नौकरी छोड़ दी है या नहीं। यह प्रश्न मुझे बताएगा कि क्या नौकरी सफल हुई है या नहीं। – Martin

0

बेहतर तरीके से पता लगाने के लिए कि किस नौकरियों में कोई हड़ताली नहीं है। इस क्वेरी को चलाने का प्रयास करें।

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

डिफ़ॉल्ट रूप से प्रत्येक नौकरी को निष्पादित होने पर इतिहास होना चाहिए।

संबंधित मुद्दे