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

एकाधिक SQL सर्वर एजेंट जॉब्स (T-SQL) के लिए समान शेड्यूल का उपयोग कैसे करें

जब आप SQL सर्वर एजेंट कार्य बनाते हैं, तो आपके पास उस कार्य के लिए एक नया शेड्यूल बनाने या पहले से मौजूद शेड्यूल का उपयोग करने का विकल्प होता है।

जॉब शेड्यूल को नौकरियों से स्वतंत्र रूप से प्रबंधित किया जा सकता है। आप sp_add_schedule . का उपयोग कर सकते हैं शेड्यूल और sp_attach_schedule . बनाने के लिए नौकरी के लिए अनुसूची संलग्न करने के लिए।

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

उदाहरण

मान लीजिए कि हम निम्नलिखित कोड का उपयोग करके एक नौकरी बनाते हैं:

USE msdb;  
GO  
EXEC sp_add_job  
    @job_name = N'BackupPetHotelDB' ;  
GO  
EXEC sp_add_jobstep  
    @job_name = N'BackupPetHotelDB',  
    @step_name = N'Run the backup',  
    @subsystem = N'TSQL',  
    @command = N'BACKUP DATABASE [PetHotel] TO DISK = N''C:\Backups\PetHotel.bak'' WITH CHECKSUM',
    @retry_attempts = 5,  
    @retry_interval = 5;  
GO
EXEC sp_add_schedule 
    @schedule_name = N'RunDailyAM',
    @freq_type = 4,
    @freq_interval = 4,
    @active_start_time = 041000;
GO  
EXEC sp_attach_schedule  
   @job_name = N'BackupPetHotelDB',  
   @schedule_name = N'RunDailyAM';  
GO  
EXEC sp_add_jobserver  
    @job_name = N'BackupPetHotelDB';  
GO

उस कोड में sp_add_schedule . शामिल था संग्रहीत प्रक्रिया। यह प्रक्रिया एक शेड्यूल बनाती है जिसका उपयोग किसी भी संख्या में नौकरियों द्वारा किया जा सकता है। हमारे मामले में, हमने शेड्यूल को RunDailyAM . कहा है ।

हमने तब sp_attach_schedule . का उपयोग किया था उस शेड्यूल को SQL सर्वर एजेंट जॉब में संलग्न करने के लिए जिसे हमने अभी बनाया है। यह संग्रहीत कार्यविधि है जिसका उपयोग हम उसी शेड्यूल को बाद के कार्यों में संलग्न करने के लिए कर सकते हैं।

अब एक और SQL सर्वर एजेंट जॉब बनाते हैं, लेकिन इस बार हम sp_add_schedule को शामिल नहीं करेंगे। प्रक्रिया:

USE msdb;  
GO  
EXEC dbo.sp_add_job  
    @job_name = N'BackupWorldDB' ;  
GO  
EXEC sp_add_jobstep  
    @job_name = N'BackupWorldDB',  
    @step_name = N'Run the backup',  
    @subsystem = N'TSQL',  
    @command = N'BACKUP DATABASE [World] TO DISK = N''C:\Backups\World.bak'' WITH CHECKSUM',
    @retry_attempts = 5,  
    @retry_interval = 5;  
GO
EXEC sp_attach_schedule  
   @job_name = N'BackupWorldDB',  
   @schedule_name = N'RunDailyAM';  
GO  
EXEC sp_add_jobserver  
    @job_name = N'BackupWorldDB',
    @server_name = N'(LOCAL)';  
GO

हमने sp_add_schedule . का उपयोग नहीं किया प्रक्रिया, क्योंकि हमने पिछली नौकरी में पहले से बनाए गए शेड्यूल का उपयोग किया था।

हालांकि, हमने sp_attach_schedule . का उपयोग किया था संग्रहीत कार्यविधि, क्योंकि हमें पहले बनाए गए शेड्यूल को अपनी नई नौकरी में संलग्न करने की आवश्यकता थी।

तो दोनों कार्य अब एक ही समय पर चलेंगे।

पता लगाएं कि कितने कार्य शेड्यूल से जुड़े हैं

आप sp_help_jobcount . का उपयोग कर सकते हैं किसी दिए गए शेड्यूल से जुड़ी नौकरियों की संख्या वापस करने की प्रक्रिया। प्रक्रिया को कॉल करते समय बस शेड्यूल नाम या आईडी प्रदान करें।

उदाहरण:

EXEC sp_help_jobcount @schedule_name = 'RunDailyAM';

परिणाम:

JobCount
--------
 2


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक कॉलम पर DISTINCT चुनें

  2. SQL सर्वर नवीनतम संस्करण, संस्करण और SQL सर्वर इतिहास

  3. SQL सर्वर 2000 के साथ @TABLE EXEC @query में सम्मिलित करें

  4. 32-बिट एक्सेल और 64-बिट एसक्यूएल सर्वर

  5. SQL सर्वर में केवल दिनांक के साथ डेटाटाइम की तुलना कैसे करें