bagaimana cara menjadwalkan pekerjaan untuk query sql agar berjalan setiap hari?

Jawaban:

164
  1. Perluas node Agen Server SQL dan klik kanan node Pekerjaan di Agen Server SQL dan pilih 'New Job'

  2. Di 'New Job'jendela masukkan nama pekerjaan dan deskripsi di 'General'tab.

  3. Pilih 'Steps'di sisi kiri jendela dan klik 'New'di bagian bawah.

  4. Di 'Steps'jendela masukkan nama langkah dan pilih database yang Anda inginkan untuk menjalankan kueri.

  5. Tempelkan perintah T-SQL yang ingin Anda jalankan ke jendela Command dan klik 'OK'.

  6. Klik 'Schedule'menu di sebelah kiri jendela New Job dan masukkan informasi jadwal (mis. Harian dan waktu).

  7. Klik 'OK'- dan seharusnya begitu.

(Tentu saja ada opsi lain yang dapat Anda tambahkan - tetapi saya akan mengatakan itu adalah minimum yang Anda butuhkan untuk mengatur dan menjadwalkan pekerjaan)

L-Note
sumber
bagaimana melakukannya di sql server express? apakah agen datang dengan sql server express dengan layanan lanjutan '?'
Bilal Fazlani
6
Tak perlu dikatakan bahwa tergantung pada siapa Anda logon, Anda mungkin tidak dapat melihat node Agen Server SQL sama sekali ... Tidak semua orang logon sebagai sa. Info lebih lanjut (agak kering) di sini .. msdn.microsoft.com/en-us/library/ms188283.aspx
Fetchez la vache
jika node Agen Server SQL tidak dapat diperluas dengan label "Agen XP dinonaktifkan", jalankan kode ini sp_configure 'show advanced options', 1; PERGI KONFIGURASI; GO sp_configure 'Agent XPs', 1; GO RECONFIGURE GO Penjelasan ada di bawah tautan ini: msdn.microsoft.com/en-us/library/ms178127.aspx
Barry Guvenkaya
4
Mungkin menggunakan scripting BAT, CMD, Powershell untuk melakukannya secara terprogram
Kiquenet
115

Saya membuat GIF animasi dari langkah-langkah dalam jawaban yang diterima. Ini dari MSSQL Server 2012

Jadwalkan Pekerjaan SQL

S. Mason
sumber
8
GIF - sangat kreatif! :)
Zeek2
9
Ini harus menjadi jawaban yang paling banyak dipilih di stackoverflow.!
Goutham Anush
1
Apakah harus login dengan sa? Saya tidak login dengan sa dan saya tidak melihat agen server sql. Saya pikir saya tidak memiliki cukup hak untuk melihatnya.
Alper
1
Untuk melihat area Agen Server SQL di pohon menu, pengguna yang Anda masuki memerlukan izin yang benar pada database MSDB (MSDB adalah database bawaan yang digunakan SSMS untuk hal-hal seperti izin). Dari penjelajah pohon utama, buka Keamanan> Masuk> nama pengguna Anda> klik kanan> properti> pemetaan pengguna> periksa msdb> lalu di bawah periksa SQLAgentOperatorRole
S.Mason
19

Untuk melakukan ini di t-sql, Anda dapat menggunakan prosedur tersimpan sistem berikut untuk menjadwalkan pekerjaan harian. Contoh ini dijadwalkan setiap hari pada jam 1:00 pagi. Lihat bantuan Microsoft untuk detail tentang sintaks dari prosedur tersimpan individu dan rentang parameter yang valid.

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
Doug Lampe
sumber
2
mengagumkan. persis apa yang saya butuhkan. Terima kasih :)
AJ.
9

Menggunakan T-SQL: Pekerjaan saya adalah menjalankan prosedur yang tersimpan. Anda dapat dengan mudah mengubah @commanduntuk menjalankan sql Anda.

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 ;
efisis
sumber
-1

Berikut kode contoh:

Exec sp_add_schedule
    @schedule_name = N'SchedulName' 
    @freq_type = 1
    @active_start_time = 08300
penjahat
sumber
21
menambahkan penjelasan tentang kode Anda dalam jawaban Anda biasanya merupakan ide yang bagus (meskipun jelas bagi Anda).
Nathan Hughes
Jawaban ini tidak mengandung cukup penjelasan. Tanpa penjelasan yang cukup, pembaca tidak dapat memahami jawaban ini.
Jino Shaji
-2

Jika Anda ingin backup harian // mengikuti penyimpanan skrip sql di C: \ Users \ admin \ Desktop \ DBScript \ DBBackUpSQL.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

buka Penjadwal tugas

buat tugas-> pilih Triggerstab Pilih New.

Tombol Pilih tombol Radio Harian

klik OkTombol

lalu klik Actiontab Select New.

Tombol Letakkan "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"-S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"di kotak teks program / skrip (pastikan Cocokkan jalur file Anda dan Letakkan jalur yang dikutip ganda di start-> kotak pencarian dan jika ditemukan, klik dan lihat cadangan ada atau tidak )

- jalur di atas dapat berupa 100 tulis 90 "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"

lalu klik tombol ok

Script akan dijalankan pada waktu yang Anda pilih pada tab Trigger setiap hari

bersenang senang lah.............

pravin Dukare
sumber