इस आलेख में, मैं SQL सर्वर एजेंट कार्य से जुड़े शेड्यूल को वापस करने के लिए T-SQL का उपयोग करने के लिए चार विकल्प प्रस्तुत करता हूं।
विकल्प
SQL सर्वर एजेंट कार्य के शेड्यूल को वापस करने के लिए आप निम्न T-SQL विकल्पों का उपयोग कर सकते हैं:
- विकल्प 1 :
sp_help_job
निष्पादित करें संग्रहीत प्रक्रिया। - विकल्प 2 :
sp_help_schedule
निष्पादित करें संग्रहीत प्रक्रिया। - विकल्प 3 :
sp_help_jobschedule
निष्पादित करें संग्रहीत प्रक्रिया। - विकल्प 4 :
sysschedules
को क्वेरी करें तालिका (और इसके साथ जुड़ेंsysjobschedules
औरsysjobs_view
)
ये सभी विकल्प msdb . में मौजूद हैं डेटाबेस, और इसलिए उस डेटाबेस में चलाने की आवश्यकता है। आप msdb . पर स्विच करके ऐसा कर सकते हैं डेटाबेस पहले, या वस्तु को उचित रूप से अर्हता प्राप्त करके (उदा. msdb.dbo.sysschedules
)।
विकल्प 1:sp_help_job
संग्रहित प्रक्रिया
जब आप sp_help_job
को कॉल करते हैं बिना किसी तर्क के, यह केवल नौकरियों की एक सूची देता है। लेकिन जब आप किसी नौकरी का नाम या आईडी पास करते हैं, तो वह उस नौकरी के विवरण को सूचीबद्ध करता है, जिसमें उसका शेड्यूल भी शामिल होता है।
यहां एक उदाहरण दिया गया है:
USE msdb;
EXEC sp_help_job
@job_name = 'SqlAgentTest';
परिणाम:
यह नौकरी, साथ ही किसी भी नौकरी के कदम, शेड्यूल और लक्ष्य सर्वर को सूचीबद्ध करता है। इस मामले में, नौकरी से जुड़ी दो अनुसूचियां हैं।
आईडी का उपयोग करते समय कोड का एक उदाहरण यहां दिया गया है:
EXEC sp_help_job
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
आईडी का उपयोग करते समय, आप चाहें तो पैरामीटर नाम को छोड़ सकते हैं।
उदाहरण:
EXEC sp_help_job '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
वाक्यविन्यास
sp_help_job
. का पूरा सिंटैक्स इस तरह जाता है:
sp_help_job { [ @job_id = ] job_id
[ @job_name = ] 'job_name' }
[ , [ @job_aspect = ] 'job_aspect' ]
[ , [ @job_type = ] 'job_type' ]
[ , [ @owner_login_name = ] 'login_name' ]
[ , [ @subsystem = ] 'subsystem' ]
[ , [ @category_name = ] 'category' ]
[ , [ @enabled = ] enabled ]
[ , [ @execution_status = ] status ]
[ , [ @date_comparator = ] 'date_comparison' ]
[ , [ @date_created = ] date_created ]
[ , [ @date_last_modified = ] date_modified ]
[ , [ @description = ] 'description_pattern' ]
sp_help_job
. के लिए Microsoft के दस्तावेज़ देखें प्रत्येक पैरामीटर के स्पष्टीकरण के लिए, साथ ही साथ प्रत्येक मान जो स्वीकार करता है।
विकल्प 2:sp_help_schedule
संग्रहित प्रक्रिया
sp_help_schedule
संग्रहीत कार्यविधि विशेष रूप से शेड्यूल वापस करने के लिए डिज़ाइन की गई है।
यदि आप बिना किसी तर्क के इसे निष्पादित करते हैं, तो यह उदाहरण में सभी शेड्यूल वापस कर देगा:
EXEC sp_help_schedule;
किसी विशिष्ट शेड्यूल की जानकारी प्राप्त करने के लिए, शेड्यूल का नाम या उसकी आईडी पास करें:
EXEC sp_help_schedule
@schedule_name = 'Run_Sat_6AM';
हालांकि sp_help_schedule
किसी विशिष्ट कार्य के लिए शेड्यूल वापस नहीं करता है, आप इसका उपयोग केवल उन शेड्यूल को वापस करने के लिए कर सकते हैं जो किसी कार्य से जुड़े हैं।
@attached_schedules_only
पैरामीटर बिट . है , 0
. के डिफ़ॉल्ट के साथ , जिसका अर्थ है कि यह संलग्न और अनासक्त दोनों अनुसूचियों को लौटाता है। 1
. का मान पास करना इसे केवल संलग्न अनुसूचियों तक सीमित करता है।
उदाहरण:
EXEC sp_help_schedule
@attached_schedules_only = 1;
एक और चीज जो आप कर सकते हैं वह है @include_description
. का उपयोग करना परिणाम सेट में शेड्यूल के विवरण को शामिल करना है या नहीं, यह निर्दिष्ट करने के लिए पैरामीटर।
देखें sp_help_schedule
. का उपयोग करना अधिक जानकारी और उदाहरणों के लिए SQL सर्वर में।
विकल्प 3:sp_help_jobschedule
संग्रहित प्रक्रिया
sp_help_jobschedule
संग्रहीत कार्यविधि नौकरियों के शेड्यूलिंग के बारे में जानकारी लौटाती है।
उदाहरण:
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest';
यह शेड्यूल की एक सूची देता है जो निर्दिष्ट कार्य से जुड़ी होती है।
आप उस शेड्यूल को वापस करने के लिए शेड्यूल की आईडी या नाम भी पास कर सकते हैं।
जब आप sp_help_jobschedule
. पर कॉल करते हैं , आपको या तो कार्य का नाम या उसकी आईडी (लेकिन दोनों नहीं), या शेड्यूल आईडी प्रदान करनी होगी। आप schedule_name
. भी पास कर सकते हैं लेकिन केवल जॉब आईडी या उसके नाम के संयोजन में।
तर्कों का स्वीकृत संयोजन थोड़ा मुश्किल है। देखें sp_help_jobschedule
. का उपयोग करना अधिक विस्तृत विवरण और अधिक उदाहरणों के लिए SQL सर्वर में।
विकल्प 4:sysschedules
टेबल (और अन्य)
आप sysschedules
. को क्वेरी कर सकते हैं तालिका बनाएं और इसे sysjobschedules
. जैसी तालिकाओं के साथ जोड़ें और sysjobs_view
नौकरियों और उनके संबंधित कार्यक्रमों की सूची वापस करने के लिए।
उदाहरण:
SELECT
jv.name,
jv.description,
s.schedule_id,
s.name,
s.freq_type,
s.freq_interval,
s.freq_subday_type,
s.freq_subday_interval,
js.next_run_date,
js.next_run_time
FROM msdb.dbo.sysjobs_view jv
INNER JOIN msdb.dbo.sysjobschedules js
ON jv.job_id = js.job_id
INNER JOIN msdb.dbo.sysschedules s
ON s.schedule_id = js.schedule_id
ORDER BY jv.name, s.name;
परिणाम:
इस मामले में मैंने केवल उन शेड्यूल को वापस करने के लिए इनर जॉइन का इस्तेमाल किया, जिनमें संबंधित नौकरी है और इसके विपरीत।
आप सभी शेड्यूल वापस करने के लिए राइट जॉइन पर स्विच कर सकते हैं, भले ही वे किसी जॉब से जुड़े हों, या लेफ्ट जॉइन सभी जॉब्स को वापस करने के लिए, भले ही उनका शेड्यूल अटैच हो। या आप सब कुछ वापस करने के लिए पूर्ण जुड़ाव का उपयोग कर सकते हैं।