दैनिक चलाने के लिए sql क्वेरी के लिए नौकरी कैसे शेड्यूल करें?


121

मुझे यह जानने की आवश्यकता है कि SQL सर्वर एजेंट नौकरी का उपयोग करके प्रतिदिन न्यूनतम आवश्यक कॉन्फ़िगरेशन सेटिंग्स के साथ SQL क्वेरी कैसे चलाएं।


SQL सर्वर के किस संस्करण का आप उपयोग कर रहे हैं?
फेबर

1
यहाँ एक्सप्रेस संस्करण के लिए समाधान है: stackoverflow.com/a/7201189/259881
हसनग

जवाबों:


164
  1. SQL सर्वर एजेंट नोड का विस्तार करें और SQL सर्वर एजेंट में नौकरियां नोड पर राइट-क्लिक करें और चुनें 'New Job'

  2. में 'New Job'खिड़की नौकरी के नाम और पर एक विवरण दर्ज 'General'टैब।

  3. 'Steps'खिड़की के बाईं ओर का चयन करें और 'New'नीचे क्लिक करें ।

  4. में 'Steps'खिड़की एक कदम नाम दर्ज करें और डेटाबेस क्वेरी के खिलाफ चलाने के लिए चाहते हैं।

  5. T-SQL कमांड में पेस्ट करें जिसे आप कमांड विंडो में चलाना चाहते हैं और क्लिक करें 'OK'

  6. 'Schedule'नई नौकरी विंडो के बाईं ओर स्थित मेनू पर क्लिक करें और अनुसूची जानकारी दर्ज करें (जैसे दैनिक और एक समय)।

  7. क्लिक करें 'OK'- और यह होना चाहिए।

(निश्चित रूप से अन्य विकल्प हैं जिन्हें आप जोड़ सकते हैं - लेकिन मैं कहूंगा कि नंगे न्यूनतम आपको नौकरी स्थापित करने और निर्धारित करने की आवश्यकता है)


कैसे sql सर्वर एक्सप्रेस पर ऐसा करने के लिए? क्या एजेंट उन्नत सेवाओं के साथ एसक्यूएल सर्वर एक्सप्रेस के साथ आता है? '
बिलाल फजलानी

6
यह बिना कहे चला जाता है कि आप जिस पर लॉग इन करते हैं उसके आधार पर, आप SQL सर्वर एजेंट नोड को बिल्कुल भी देखने में सक्षम नहीं हो सकते हैं ... हर कोई सा के रूप में लॉग नहीं करता है। इसके अलावा (बल्कि शुष्क) जानकारी यहाँ .. msdn.microsoft.com/en-us/library/ms188283.aspx
Fetchez la vache

यदि SQL Server एजेंट नोड लेबल "एजेंट XP अक्षम" के साथ विस्तार योग्य नहीं है, तो इस कोड को चलाएं sp_configure 'उन्नत विकल्प दिखाएं', 1; GO RECONFIGURE; जाओ sp_configure 'एजेंट XP', 1; GO RECONFIGURE GO स्पष्टीकरण इस लिंक के तहत है: msdn.microsoft.com/en-us/library/ms178127.aspx
बैरी ग्वेनकाया

4
हो सकता है कि स्क्रिप्टिंग बैट, सीएमडी,
पॉवर्सशेल का उपयोग

115

मैंने स्वीकृत उत्तर में चरणों का एक एनिमेटेड GIF बनाया। यह MSSQL सर्वर 2012 से है

एसक्यूएल जॉब शेड्यूल करें


8
एक GIF - कैसे रचनात्मक! :)
Zeek2

9
इस stackoverflow में सबसे उत्कीर्ण जवाब होना चाहिए।
गौतम अनुज

1
क्या इसे sa के साथ लॉगिन करना होगा? मैं sa के साथ लॉगिन नहीं हूं और मैंने sql सर्वर एजेंट नहीं देखा है। मुझे लगता है कि मेरे पास इसे देखने के लिए पर्याप्त अधिकार नहीं हैं।
Alper

1
मेनू ट्री में SQL सर्वर एजेंट क्षेत्र को देखने के लिए, जिस उपयोगकर्ता को आपने लॉग इन किया है, उसे MSDB डेटाबेस पर सही अनुमतियों की आवश्यकता होती है (MSDB एक अंतर्निहित डेटाबेस है जो SSMS अनुमति जैसी चीज़ों के लिए उपयोग होता है)। मुख्य ट्री एक्सप्लोरर से सिक्योरिटी> लॉगिन्स> अपने-यूज़रनेम> राइट क्लिक> प्रॉपर्टीज़> यूजर मैपिंग> चेक msdb> पर जाएं और फिर नीचे SQLAgentOperatorRole
S.Mason

19

T-sql में ऐसा करने के लिए, आप दैनिक कार्य को शेड्यूल करने के लिए निम्न सिस्टम संग्रहीत कार्यविधियों का उपयोग कर सकते हैं। यह उदाहरण रोजाना 1:00 बजे शेड्यूल करता है। अलग-अलग संग्रहीत प्रक्रियाओं और मापदंडों की मान्य श्रेणी के सिंटैक्स पर विवरण के लिए Microsoft सहायता देखें।

DECLARE @job_name NVARCHAR(128), @description NVARCHAR(512), @owner_login_name NVARCHAR(128), @database_name NVARCHAR(128);

SET @job_name = N'Some Title';
SET @description = N'Periodically do something';
SET @owner_login_name = N'login';
SET @database_name = N'Database_Name';

-- Delete job if it already exists:
IF EXISTS(SELECT job_id FROM msdb.dbo.sysjobs WHERE (name = @job_name))
BEGIN
    EXEC msdb.dbo.sp_delete_job
        @job_name = @job_name;
END

-- Create the job:
EXEC  msdb.dbo.sp_add_job
    @job_name=@job_name, 
    @enabled=1, 
    @notify_level_eventlog=0, 
    @notify_level_email=2, 
    @notify_level_netsend=2, 
    @notify_level_page=2, 
    @delete_level=0, 
    @description=@description, 
    @category_name=N'[Uncategorized (Local)]', 
    @owner_login_name=@owner_login_name;

-- Add server:
EXEC msdb.dbo.sp_add_jobserver @job_name=@job_name;

-- Add step to execute SQL:
EXEC msdb.dbo.sp_add_jobstep
    @job_name=@job_name,
    @step_name=N'Execute SQL', 
    @step_id=1, 
    @cmdexec_success_code=0, 
    @on_success_action=1, 
    @on_fail_action=2, 
    @retry_attempts=0, 
    @retry_interval=0, 
    @os_run_priority=0, 
    @subsystem=N'TSQL', 
    @command=N'EXEC my_stored_procedure; -- OR ANY SQL STATEMENT', 
    @database_name=@database_name, 
    @flags=0;

-- Update job to set start step:
EXEC msdb.dbo.sp_update_job
    @job_name=@job_name, 
    @enabled=1, 
    @start_step_id=1, 
    @notify_level_eventlog=0, 
    @notify_level_email=2, 
    @notify_level_netsend=2, 
    @notify_level_page=2, 
    @delete_level=0, 
    @description=@description, 
    @category_name=N'[Uncategorized (Local)]', 
    @owner_login_name=@owner_login_name, 
    @notify_email_operator_name=N'', 
    @notify_netsend_operator_name=N'', 
    @notify_page_operator_name=N'';

-- Schedule job:
EXEC msdb.dbo.sp_add_jobschedule
    @job_name=@job_name,
    @name=N'Daily',
    @enabled=1,
    @freq_type=4,
    @freq_interval=1, 
    @freq_subday_type=1, 
    @freq_subday_interval=0, 
    @freq_relative_interval=0, 
    @freq_recurrence_factor=1, 
    @active_start_date=20170101, --YYYYMMDD
    @active_end_date=99991231, --YYYYMMDD (this represents no end date)
    @active_start_time=010000, --HHMMSS
    @active_end_time=235959; --HHMMSS

2
बहुत बढ़िया। वास्तव में मुझे क्या चाहिए। धन्यवाद :)
एजे।

9

टी-एसक्यूएल का उपयोग करना: मेरा काम संग्रहीत प्रक्रिया को निष्पादित कर रहा है। आप @commandअपने sql को चलाने के लिए आसानी से बदल सकते हैं ।

EXEC msdb.dbo.sp_add_job  
   @job_name = N'MakeDailyJob',   
   @enabled = 1,   
   @description = N'Procedure execution every day' ; 

 EXEC msdb.dbo.sp_add_jobstep  
    @job_name = N'MakeDailyJob',   
    @step_name = N'Run Procedure',   
    @subsystem = N'TSQL',   
    @command = 'exec BackupFromConfig';

 EXEC msdb.dbo.sp_add_schedule  
    @schedule_name = N'Everyday schedule',   
    @freq_type = 4,  -- daily start
    @freq_interval = 1,
    @active_start_time = '230000' ;   -- start time 23:00:00

 EXEC msdb.dbo.sp_attach_schedule  
   @job_name = N'MakeDailyJob',  
   @schedule_name = N'Everyday schedule' ;

 EXEC msdb.dbo.sp_add_jobserver  
   @job_name = N'MakeDailyJob',  
   @server_name = @@servername ;

-1

यहाँ एक नमूना कोड है:

Exec sp_add_schedule
    @schedule_name = N'SchedulName' 
    @freq_type = 1
    @active_start_time = 08300

21
अपने उत्तर में अपने कोड की व्याख्या जोड़ना आमतौर पर एक अच्छा विचार है (भले ही यह आपके लिए स्पष्ट हो)।
नाथन ह्यूजेस

इस उत्तर में पर्याप्त स्पष्टीकरण नहीं है। पर्याप्त स्पष्टीकरण के बिना पाठक इस उत्तर को नहीं समझ सकते।
जिनो शाजी

-2

यदि आप दैनिक बैकअप चाहते हैं तो C: \ Users \ admin \ Desktop \ DBScript \ DBBackUpSQL.sql में sql स्क्रिप्ट स्टोर का अनुसरण करें

DECLARE @pathName NVARCHAR(512),
 @databaseName NVARCHAR(512) SET @databaseName = 'Databasename' SET @pathName = 'C:\DBBackup\DBData\DBBackUp' + Convert(varchar(8), GETDATE(), 112) + '_' + Replace((Convert(varchar(8), GETDATE(), 108)),':','-')+ '.bak' BACKUP DATABASE @databaseName TO DISK = @pathName WITH NOFORMAT, 
INIT, 
NAME = N'', 
SKIP, 
NOREWIND, 
NOUNLOAD, 
STATS = 10 
GO

कार्य शेड्यूलर खोलें

कार्य बनाएं-> Triggersटैब चुनें चयन करें New

बटन दैनिक रेडियो बटन का चयन करें

Okबटन पर क्लिक करें

इसके बाद Actionटैब न्यू पर क्लिक करें।

प्रोग्राम / स्क्रिप्ट टेक्स्ट बॉक्स में बटन पुट "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"-S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"(सुनिश्चित करें कि आपकी फ़ाइलें पथ से मेल खाती हैं और शुरू में डबल उद्धृत पथ डालें-> खोज बॉक्स और यदि यह मिल जाए तो इसे क्लिक करें और देखें कि बैकअप है या नहीं )

- उपरोक्त पथ 100 लिखने के लिए 90 लिखा जा सकता है "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"

फिर ओके बटन पर क्लिक करें

स्क्रिप्ट समय पर निष्पादित होगी जिसे आप दैनिक आधार पर ट्रिगर टैब पर चुनते हैं

इसका आनंद लें.............

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.