इस लेख में, मैं टी-एसक्यूएल का उपयोग करते समय SQL सर्वर एजेंट नौकरी के चरणों को वापस करने के लिए तीन विकल्प प्रस्तुत करता हूं।
विकल्प
SQL सर्वर एजेंट कार्य के चरणों को वापस करने के लिए आप निम्न T-SQL विकल्पों का उपयोग कर सकते हैं:
- विकल्प 1 :
sp_help_job
निष्पादित करें संग्रहीत प्रक्रिया। - विकल्प 2 :
sp_help_jobstep
निष्पादित करें संग्रहीत प्रक्रिया। - विकल्प 3 :
sysjobsteps
को क्वेरी करें तालिका (और इसके साथ जुड़ेंsysjobs_view
यदि आवश्यक हुआ)।
ये सभी विकल्प msdb . में मौजूद हैं डेटाबेस, और इसलिए उस डेटाबेस में चलाने की आवश्यकता है। आप msdb . पर स्विच करके ऐसा कर सकते हैं डेटाबेस पहले, या वस्तु को उचित रूप से अर्हता प्राप्त करके (उदा. msdb.dbo.sysjobsteps
)।
विकल्प 1:sp_help_job
जब आप sp_help_job
को कॉल करते हैं बिना किसी तर्क के, यह केवल नौकरियों की एक सूची देता है। लेकिन जब आप किसी नौकरी का नाम या आईडी पास करते हैं, तो वह उस नौकरी के विवरण को सूचीबद्ध करता है, जिसमें उसके चरण भी शामिल हैं।
यहां एक उदाहरण दिया गया है:
EXEC sp_help_job
@job_name = 'SqlAgentTest';
परिणाम:
यह कार्य, साथ ही किसी भी कार्य चरण, शेड्यूल और लक्षित सर्वरों को सूचीबद्ध करता है।
आईडी का उपयोग करते समय कोड का एक उदाहरण यहां दिया गया है:
EXEC sp_help_job
@job_id = '343D9F2A-070A-4367-BF69-4248FFF57D70';
आईडी का उपयोग करते समय, आप चाहें तो पैरामीटर नाम को छोड़ सकते हैं।
उदाहरण:
EXEC sp_help_job '343D9F2A-070A-4367-BF69-4248FFF57D70';
वाक्यविन्यास
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_jobstep
sp_help_jobstep
संग्रहीत प्रक्रिया विशेष रूप से नौकरी के चरणों को वापस करने के लिए डिज़ाइन की गई है। लेकिन यह सब लौट आता है।
इसलिए यदि आप कोई भी शेड्यूल और लक्ष्य सर्वर सामग्री आदि नहीं देखना चाहते हैं, तो यह वही हो सकता है जिसकी आप तलाश कर रहे हैं।
आप sp_help_jobstep
pass पास कर सकते हैं नौकरी का नाम या उसकी आईडी (लेकिन दोनों नहीं)।
यहां एक उदाहरण दिया गया है:
EXEC sp_help_jobstep
@job_name = 'SqlAgentTest';
और दो-चरणीय कार्य पर परिणाम कैसा दिखता है:
यदि आप केवल एक विशिष्ट चरण को वापस करना चाहते हैं तो आप एक चरण आईडी भी निर्दिष्ट कर सकते हैं। आपको अभी भी निर्दिष्ट करना होगा कि यह किस काम के लिए है (या तो इसकी आईडी या नाम के साथ)।
नौकरी में दूसरा चरण निर्दिष्ट करने का एक उदाहरण यहां दिया गया है:
EXEC sp_help_jobstep
@job_name = 'SqlAgentTest',
@step_id = 2;
उस कार्य के लिए चरण आईडी वास्तव में मौजूद होना चाहिए। उदाहरण के लिए, 3
. की एक चरण आईडी निर्दिष्ट करना उपरोक्त कार्य के परिणामस्वरूप त्रुटि होती है।
विकल्प 3:sysjobsteps
टेबल
एक अन्य विकल्प sysjobsteps
. के विरुद्ध क्वेरी चलाना है टेबल।
इस तालिका में सभी कार्यों के चरण हैं, इसलिए यदि आप केवल किसी विशिष्ट कार्य के लिए चरण चाहते हैं, तो आपको कार्य आईडी पास करने की आवश्यकता होगी।
यहां sysjobsteps
को क्वेरी करने का एक उदाहरण दिया गया है किसी विशिष्ट कार्य के चरणों के लिए तालिका:
SELECT * FROM msdb.dbo.sysjobsteps
WHERE job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
यह sp_help_jobstep
. के समान परिणाम देता है प्रक्रिया।
यदि आप चाहते हैं कि नौकरी के कुछ विवरण लौटाए जाएं (जैसे कि उसका नाम), तो आप sysjobsteps
के बीच एक जॉइन चला सकते हैं और sysjobs_view
।
उदाहरण:
SELECT
jv.name,
jv.description,
jv.start_step_id,
js.step_id,
js.step_name
FROM msdb.dbo.sysjobs_view jv
LEFT JOIN msdb.dbo.sysjobsteps js
ON jv.job_id = js.job_id;
मेरे परीक्षण परिवेश में यह परिणाम है:
यह लेफ्ट जॉइन होने के कारण, इसमें ऐसे कार्य शामिल हैं जिनमें कोई चरण नहीं है (देखें NULL
step_id
. में और step_name
नौकरी के लिए कॉलम TestJob
. कहा जाता है )
इसे केवल चरणों वाले उन कार्यों तक सीमित करने के लिए, एक आंतरिक जुड़ाव का उपयोग करें।