Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर कार्य इतिहास प्राप्त करने के 4 तरीके

इस लेख में, मैं SQL सर्वर एजेंट कार्य इतिहास डेटा लौटाने के लिए चार विकल्प प्रस्तुत करता हूँ।

विकल्प

मैंने दो GUI विकल्प और दो T-SQL विकल्प शामिल किए हैं:

  • विकल्प 1 :एसएसएमएस जीयूआई का प्रयोग करें।
  • विकल्प 2 :Azure डेटा स्टूडियो GUI (SQL सर्वर एजेंट एक्सटेंशन के माध्यम से) का उपयोग करें
  • विकल्प 3 :sp_help_jobhistory निष्पादित करें संग्रहीत प्रक्रिया।
  • विकल्प 4 :sysjobhistory से पूछताछ करें तालिका (और इसके साथ जुड़ें sysjobs_view देखें या sysjobs टेबल)।

SQL सर्वर एजेंट ऑब्जेक्ट msdb . में रहते हैं डेटाबेस, और इसलिए उस डेटाबेस में टी-एसक्यूएल विकल्पों को चलाने की आवश्यकता है। आप msdb . पर स्विच करके ऐसा कर सकते हैं डेटाबेस पहले, या वस्तु को उचित रूप से अर्हता प्राप्त करके (उदा. msdb.dbo.sysjobhistory )।

विकल्प 1:SSMS GUI का उपयोग करें

कार्य इतिहास देखने के लिए आप SQL सर्वर प्रबंधन स्टूडियो (SSMS) GUI का उपयोग कर सकते हैं।

आप ऑब्जेक्ट एक्सप्लोरर में SQL सर्वर एजेंट नोड का विस्तार करके, फिर नौकरियां पर राइट-क्लिक करके ऐसा कर सकते हैं। और इतिहास देखें . का चयन करना प्रासंगिक मेनू से:

यह लॉग फ़ाइल व्यूअर के अंदर सभी नौकरियों के कार्य इतिहास के साथ एक नई विंडो खोलता है:

आप इस स्क्रीन में अन्य कार्यों को अचयनित करके किसी एकल कार्य का इतिहास देख सकते हैं। वैकल्पिक रूप से, आप ऑब्जेक्ट एक्सप्लोरर में उस नौकरी का पता लगा सकते हैं और वहां से राइट-क्लिक कर सकते हैं।

अधिक विवरण और स्क्रीनशॉट के लिए SSMS के साथ SQL सर्वर एजेंट कार्य इतिहास देखें देखें।

विकल्प 2:Azure डेटा स्टूडियो GUI का उपयोग करें

यदि आप Azure डेटा स्टूडियो का उपयोग करते हैं, तो हो सकता है कि आप इसे न जानते हों, लेकिन आपके पास SQL ​​सर्वर एजेंट कार्य इतिहास देखने का विकल्प भी है।

ऐसा करने का तरीका SQL सर्वर एजेंट एक्सटेंशन के माध्यम से है।

जो दिखता है वह यहां दिया गया है:

इस स्क्रीन में, हम BackupKrankyKranesDB नामक नौकरी के इतिहास को देख रहे हैं। ।

कार्य इतिहास बाएँ फलक में सूचीबद्ध है। आप उस आइटम के विवरण को दाएँ फलक में प्रदर्शित करने के लिए बाएँ इतिहास फलक में प्रत्येक आइटम पर क्लिक कर सकते हैं।

इस लेखन के समय, ऐसा प्रतीत होता है कि आप एक समय में केवल एक ही कार्य का इतिहास देख सकते हैं।

अधिक विवरण और स्क्रीनशॉट के लिए Azure डेटा स्टूडियो के साथ SQL सर्वर एजेंट कार्य इतिहास देखें देखें।

विकल्प 3:sp_help_jobhistory संग्रहित प्रक्रिया

यदि आप अपने कार्यों को T-SQL के साथ करना पसंद करते हैं (या आवश्यकता है), तो sp_help_jobhistory संग्रहीत कार्यविधि आपके लिए एक त्वरित और आसान विकल्प है।

जब आप sp_help_jobhistory . पर कॉल करते हैं बिना किसी तर्क के, यह सभी कार्यों के लिए इतिहास लौटाता है। लेकिन जब आप किसी नौकरी का नाम या आईडी पास करते हैं, तो यह केवल उस एक नौकरी के इतिहास को सूचीबद्ध करता है।

यहां एक उदाहरण दिया गया है:

EXEC msdb.dbo.sp_help_jobhistory;

परिणाम:

ध्यान दें कि sp_help_jobhistory msdb . में स्थित है डेटाबेस, इसलिए आपको यह सुनिश्चित करने की ज़रूरत है कि आप इसे वहां से चलाते हैं। आप या तो उस डेटाबेस पर स्विच करके ऐसा कर सकते हैं (उदाहरण के लिए USE msdb . के साथ) ), या डेटाबेस और स्कीमा (यानी msdn.dbo.sp_help_jobhistory के साथ संग्रहीत कार्यविधि को अर्हता प्राप्त करके )।

आप उस नौकरी की आईडी या नाम को तर्क के रूप में पारित करके किसी एकल नौकरी का इतिहास प्राप्त कर सकते हैं।

उदाहरण:

EXEC msdb.dbo.sp_help_jobhistory
	@job_name = 'BackupKrankyKranesDB';

आप @mode parameter . का भी उपयोग कर सकते हैं यह निर्दिष्ट करने के लिए कि परिणाम सेट में सभी कॉलम वापस करना है या नहीं (FULL ), या सिर्फ एक सारांश (SUMMARY )

EXEC msdb.dbo.sp_help_jobhistory
	@job_name = 'BackupKrankyKranesDB',
	@mode = 'FULL';

डिफ़ॉल्ट है SUMMARY

विकल्प 4:sysjobhistory टेबल

sysjobhistory तालिका वह तालिका है जो कार्य इतिहास डेटा संग्रहीत करती है।

किसी भी तालिका की तरह, आप बस कुछ इस तरह कर सकते हैं:

SELECT * FROM msdb.dbo.sysjobhistory;

वह तालिका में सभी कॉलम वापस कर देगा।

हालाँकि, यह तालिका कार्य का नाम (या कार्य का विवरण, आदि) संग्रहीत नहीं करती है। वह डेटा प्राप्त करने के लिए, आपको इस तालिका को अन्य तालिकाओं/दृश्यों के साथ जोड़ना होगा, जैसे कि sysjobs_view देखें या sysjobs टेबल। यह एक अधिक संपूर्ण परिणाम सेट प्रदान करेगा।

नीचे एक क्वेरी है जिसका उपयोग आप अधिक संपूर्ण डेटा वापस करने के लिए कर सकते हैं।

SELECT jv.name AS Job,
		jh.step_name AS Step,
		msdb.dbo.AGENT_DATETIME(jh.run_date, jh.run_time) AS RunDateTime,
		STUFF(STUFF(STUFF(RIGHT(REPLICATE('0', 8) + CAST(jh.run_duration as varchar(8)), 8), 3, 0, ':'), 6, 0, ':'), 9, 0, ':') AS RunDuration
FROM msdb.dbo.sysjobs_view jv
INNER JOIN msdb.dbo.sysjobhistory jh
ON jv.job_id = jh.job_id
ORDER BY Job, RunDateTime;

परिणाम:

आप SELECT . में और कॉलम जोड़ सकते हैं आवश्यकतानुसार सूची।

यदि आप सोच रहे हैं कि यह क्वेरी AGENT_DATETIME() जैसी अतिरिक्त सामग्री के पूरे समूह का उपयोग क्यों करती है फ़ंक्शन, STUFF() फ़ंक्शन, RIGHT() , CAST() , और REPLICATE() , यह sysjobhistory . तरीके के कारण है अपने डेटाटाइम मानों को संग्रहीत करता है।

यदि मैंने उन कार्यों का उपयोग नहीं किया होता, तो डेटाटाइम मान कम पठनीय होते।

विशेष रूप से, run_date , run_time और run_duration कॉलम अपना डेटा int . के रूप में संग्रहीत करते हैं मूल्य। डिफ़ॉल्ट रूप से, उन कॉलम में डेटा इस तरह दिखता है:

यह हममें से कुछ मनुष्यों के लिए पढ़ना कठिन बना सकता है। विशेष रूप से run_duration कॉलम। इसलिए, हमने इन स्तंभों को अधिक मानव-पठनीय प्रारूप में प्रस्तुत करने के लिए उपरोक्त क्वेरी में विभिन्न कार्यों का उपयोग किया।

आप देख सकते हैं कि sp_help_jobhistory संग्रहीत कार्यविधि एक ही समस्या से ग्रस्त है।

साथ ही, मुझे यह उल्लेख करना चाहिए कि AGENT_DATE() एक अनिर्दिष्ट कार्य प्रतीत होता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL लिपियों को मान्य करने के लिए कोड

  2. SQL सर्वर एक मिलीसेकंड क्यों खो रहा है?

  3. कैसे ठीक करें "से क्लॉज में बल्क रोसेट के लिए एक सहसंबंध नाम निर्दिष्ट किया जाना चाहिए।" SQL सर्वर में

  4. JSON PATH उदाहरणों के लिए SQL सर्वर (T-SQL)

  5. डेटा वेयरहाउस के लिए कैलेंडर तालिका