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

मौजूदा SQL सर्वर एजेंट जॉब (T-SQL) में जॉब स्टेप जोड़ें

जब आप T-SQL के साथ SQL सर्वर एजेंट जॉब बनाते हैं, तो आप sp_add_jobstep का उपयोग करते हैं प्रत्येक कार्य चरण को जोड़ने के लिए संग्रहीत कार्यविधि।

यदि आपको कभी भी उस कार्य में कोई नया चरण जोड़ने की आवश्यकता हो, तो आप sp_add_jobstep का उपयोग कर सकते हैं एक बार फिर नया कार्य चरण जोड़ने के लिए।

लेकिन आपको मौजूदा चरण को संशोधित करने की भी आवश्यकता हो सकती है, यह इस बात पर निर्भर करता है कि आप कार्य को चरणों के माध्यम से कैसे आगे बढ़ाना चाहते हैं।

उदाहरण

इस उदाहरण में, हम एक जॉब स्टेप के साथ जॉब बनाते हैं, फिर हम sp_add_jobstep का उपयोग करते हैं उस नौकरी में दूसरा कदम जोड़ने के लिए। फिर हम sp_update_jobstep . का उपयोग करते हैं पहले जॉब स्टेप को अपडेट करने के लिए ताकि यह पूरा होते ही दूसरे जॉब स्टेप पर आगे बढ़े।

नौकरी बनाएं

सबसे पहले, एक चरण के साथ कार्य बनाएं:

USE msdb;  
GO  
EXEC sp_add_job  
    @job_name = N'SqlAgentTest',
    @description = N'Insert data.',
    @category_name = 'Database Maintenance';
GO  
EXEC sp_add_jobstep  
    @job_name = N'SqlAgentTest',  
    @step_name = N'Insert data for step 1',  
    @subsystem = N'TSQL',  
    @command = N'USE TestDB; INSERT INTO SqlAgentJobs VALUES (''SqlAgentTest'', 1, SYSDATETIME())';
GO
EXEC sp_add_schedule 
    @schedule_name = N'Run_Sat_6AM',
    @freq_type = 8,
    @freq_interval = 64,
    @freq_recurrence_factor = 1,
    @active_start_time = 060000;
GO  
EXEC sp_attach_schedule  
   @job_name = N'SqlAgentTest',  
   @schedule_name = N'Run_Sat_6AM';
GO  
EXEC sp_add_jobserver  
    @job_name = N'SqlAgentTest';
GO

बस स्पष्ट होने के लिए, निम्नलिखित भाग थोड़ा सा था जिसने कदम जोड़ा:

EXEC sp_add_jobstep  
    @job_name = N'SqlAgentTest',  
    @step_name = N'Insert data for step 1',  
    @subsystem = N'TSQL',  
    @command = N'USE TestDB; INSERT INTO SqlAgentJobs VALUES (''SqlAgentTest'', 1, SYSDATETIME())';

नया कार्य चरण जोड़ें

अब हम sp_add_jobstep . का उपयोग कर सकते हैं फिर से नौकरी में एक नया कदम जोड़ने के लिए।

USE msdb;
EXEC sp_add_jobstep  
    @job_name = N'SqlAgentTest',  
    @step_name = N'Insert data for step 2',  
    @subsystem = N'TSQL',  
    @command = N'USE TestDB; INSERT INTO SqlAgentJobs VALUES (''SqlAgentTest'', 2, SYSDATETIME())';

यह कार्य में दूसरा चरण जोड़ता है।

कार्यप्रवाह अपडेट करें

यदि आप चाहते हैं कि कार्य चरण 1 से चरण 2 तक स्वचालित रूप से आगे बढ़े, तो आपको इसे कार्य चरण 1 में निर्दिष्ट करना होगा।

किसी भी नौकरी के कदम के लिए डिफ़ॉल्ट कार्रवाई यह है कि जैसे ही यह सफल हो, नौकरी को सफलता के साथ छोड़ दें। यदि चरण विफल हो जाता है, तो डिफ़ॉल्ट क्रिया विफलता के साथ छोड़ना है।

इसलिए जैसा कि वर्तमान में हमारा काम खड़ा है, जैसे ही चरण 1 पूरा हो जाएगा (चरण 2 को चलाए बिना) कार्य समाप्त हो जाएगा, और इतिहास रिपोर्ट करेगा कि कार्य सफलतापूर्वक चला।

इसलिए, हमें sp_update_jobstep . का उपयोग करने की आवश्यकता है चरण 1 को अपडेट करने के लिए, ताकि यह सफलतापूर्वक पूर्ण होने के बाद चरण 2 में आगे बढ़े।

चरण 1 विफल होने पर हम यह भी निर्दिष्ट कर सकते हैं कि क्या करना है।

USE msdb;
EXEC sp_update_jobstep  
    @job_name = N'SqlAgentTest',  
    @step_id = 1,  
    @on_success_action = 3,  
    @on_fail_action = 3;

इस मामले में मैंने निर्दिष्ट किया है कि यदि यह सफल होता है, और यदि यह विफल हो जाता है, तो इसे अगले चरण में आगे बढ़ना चाहिए।

वे मान जो आप @on_success_action . को प्रदान कर सकते हैं और @on_fail_action इस प्रकार हैं:

1 सफलतापूर्वक छोड़ें। यह @on_success_action . के लिए डिफ़ॉल्ट है ।
2 विफलता से बाहर निकलें। यह @on_fail_action . के लिए डिफ़ॉल्ट है ।
3 अगले चरण पर जाएं।
4 चरण (आईडी) पर जाएं। यह वह जगह है जहां आप उस चरण की आईडी प्रदान करते हैं जिसके लिए आप कार्य को आगे बढ़ाना चाहते हैं।

नौकरी के चरण देखें

आप sp_help_job का उपयोग कर सकते हैं सिस्टम में SQL सर्वर एजेंट जॉब के बारे में जानकारी प्राप्त करने के लिए।

आप इसे पैरामीटर के साथ या बिना पैरामीटर के उपयोग कर सकते हैं, लेकिन कार्य चरण विवरण प्राप्त करने के लिए, आपको कार्य का नाम या आईडी प्रदान करना होगा।

हम इसका उपयोग नौकरी के लिए बनाए गए दोनों कार्य चरणों को देखने के लिए कर सकते हैं।

इस तरह:

EXEC sp_help_job 
	@job_name = 'SqlAgentTest';

SSMS में इसे निष्पादित करते समय परिणाम कैसा दिखता है:

आईडी का उपयोग करते समय कोड का एक उदाहरण यहां दिया गया है:

EXEC sp_help_job 
	@job_id = '343D9F2A-070A-4367-BF69-4248FFF57D70';

आईडी का उपयोग करते समय, आप चाहें तो पैरामीटर नाम को छोड़ सकते हैं।

उदाहरण:

EXEC sp_help_job '343D9F2A-070A-4367-BF69-4248FFF57D70';

आप sp_help_jobstep . का भी उपयोग कर सकते हैं उसी तरह नौकरी के चरणों को वापस करने के लिए (नौकरी के बारे में अन्य सभी जानकारी के बिना)। यह कार्य का नाम या आईडी, साथ ही एक वैकल्पिक चरण नाम या आईडी स्वीकार करता है।

पूर्ण सिंटैक्स

sp_add_jobstep . का पूरा सिंटैक्स इस तरह जाता है:

sp_add_jobstep [ @job_id = ] job_id | [ @job_name = ] 'job_name'
     [ , [ @step_id = ] step_id ]
     { , [ @step_name = ] 'step_name' }
     [ , [ @subsystem = ] 'subsystem' ]
     [ , [ @command = ] 'command' ]
     [ , [ @additional_parameters = ] 'parameters' ]
          [ , [ @cmdexec_success_code = ] code ]
     [ , [ @on_success_action = ] success_action ]
          [ , [ @on_success_step_id = ] success_step_id ]
          [ , [ @on_fail_action = ] fail_action ]
          [ , [ @on_fail_step_id = ] fail_step_id ]
     [ , [ @server = ] 'server' ]
     [ , [ @database_name = ] 'database' ]
     [ , [ @database_user_name = ] 'user' ]
     [ , [ @retry_attempts = ] retry_attempts ]
     [ , [ @retry_interval = ] retry_interval ]
     [ , [ @os_run_priority = ] run_priority ]
     [ , [ @output_file_name = ] 'file_name' ]
     [ , [ @flags = ] flags ]
     [ , { [ @proxy_id = ] proxy_id
         | [ @proxy_name = ] 'proxy_name' } ]

sp_add_jobstep . के लिए Microsoft के दस्तावेज़ देखें प्रत्येक पैरामीटर के स्पष्टीकरण के लिए, साथ ही साथ प्रत्येक मान जो स्वीकार करता है।

sp_update_jobstep . का पूरा सिंटैक्स इस तरह जाता है:

sp_update_jobstep   
     {   [@job_id =] job_id   
       | [@job_name =] 'job_name' } ,  
     [@step_id =] step_id  
     [ , [@step_name =] 'step_name' ]  
     [ , [@subsystem =] 'subsystem' ]   
     [ , [@command =] 'command' ]  
     [ , [@additional_parameters =] 'parameters' ]  
     [ , [@cmdexec_success_code =] success_code ]  
     [ , [@on_success_action =] success_action ]   
     [ , [@on_success_step_id =] success_step_id ]  
     [ , [@on_fail_action =] fail_action ]   
     [ , [@on_fail_step_id =] fail_step_id ]  
     [ , [@server =] 'server' ]   
     [ , [@database_name =] 'database' ]  
     [ , [@database_user_name =] 'user' ]   
     [ , [@retry_attempts =] retry_attempts ]  
     [ , [@retry_interval =] retry_interval ]   
     [ , [@os_run_priority =] run_priority ]  
     [ , [@output_file_name =] 'file_name' ]   
     [ , [@flags =] flags ]  
     [ ,  {   [ @proxy_id = ] proxy_id   
            | [ @proxy_name = ] 'proxy_name' }

sp_update_jobstep . के लिए Microsoft के दस्तावेज़ देखें प्रत्येक पैरामीटर के स्पष्टीकरण के लिए, साथ ही साथ प्रत्येक मान जो स्वीकार करता है।


  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 सर्वर डेटाबेस में प्राथमिक कुंजी बाधा क्या है - SQL सर्वर / T-SQL ट्यूटोरियल भाग 54

  2. एसक्यूएल सर्वर - प्राकृतिक जॉइन की कमी / एक्स जॉइन वाई यूज़िंग (फ़ील्ड)

  3. मुझे एक SQL सर्वर प्रतिकृति प्रोजेक्ट पर गलत प्रारूप त्रुटि वाले प्रोग्राम को लोड करने का प्रयास किया गया था

  4. क्या मैं प्राथमिक कुंजी के लिए अनदेखा_dup_key चालू कर सकता हूं?

  5. SQL सर्वर में केस संवेदनशील चर