Saat menggunakan T-SQL, Anda dapat menggunakan sp_add_schedule
prosedur tersimpan untuk menambahkan jadwal SQL Server Agent.
Prosedur ini membuat jadwal, tetapi tidak melampirkannya ke pekerjaan apa pun. Untuk melampirkannya ke pekerjaan, Anda harus menggunakan sp_attach_schedule
prosedur.
Anda juga dapat menggunakan sp_add_jobschedule
untuk membuat jadwal dan melampirkan semuanya dengan prosedur yang sama.
Contoh sp_add_schedule
Prosedur
Berikut ini contoh yang menggunakan sp_add_schedule
untuk membuat jadwal baru:
EXEC sp_add_schedule
@schedule_name = N'RunDailyAM',
@freq_type = 4,
@freq_interval = 4,
@active_start_time = 041000;
GO
Prosedur tersimpan ini menerima lebih banyak argumen daripada yang saya sertakan dalam contoh ini, tetapi ini adalah beberapa yang lebih umum. Lihat tabel di bawah untuk garis besar nilai yang diterima.
@schedule_name
adalah argumen yang diperlukan, tetapi yang lainnya opsional, dan memiliki setelan default jika Anda tidak menyediakannya.
Sekarang kita dapat menggunakan sp_attach_schedule
untuk melampirkan jadwal itu ke pekerjaan yang ada:
EXEC sp_attach_schedule
@job_name = N'BackupPetHotelDB',
@schedule_name = N'RunDailyAM';
GO
Saat Anda menggunakan sp_attach_schedule
, Anda harus memberikan nama pekerjaan atau ID-nya (tetapi tidak keduanya), serta nama jadwal atau ID (tetapi tidak keduanya).
Contoh sp_add_jobschedule
Prosedur
Berikut ini contoh yang menggunakan sp_add_jobschedule
untuk membuat jadwal baru dan melampirkannya ke pekerjaan, semuanya sekaligus:
EXEC sp_add_jobschedule
@job_name = N'BackupMusicDB',
@name = N'Weekly_Sun_3AM',
@freq_type = 8,
@freq_interval = 1,
@freq_recurrence_factor = 1,
@active_start_time = 30000;
Dengan prosedur ini @job_name
argumen memberikan nama pekerjaan, dan @name
argumen memberikan nama yang ingin Anda berikan ke jadwal.
Nilai Parameter
Cara data jadwal disimpan di msdb database membuatnya sedikit rumit saat menjadwalkan pekerjaan dengan T-SQL.
Nilai tanggal/waktu disimpan sebagai int jenis. Jenis frekuensi dinyatakan sebagai int , seperti nilai interval, dan berbagai opsi lainnya.
Di bawah ini adalah ikhtisar nilai yang diterima untuk parameter yang diberikan dalam contoh di atas.
@freq_type
Argumen ini menentukan kapan suatu pekerjaan akan dieksekusi. Ia menerima nilai-nilai berikut:
Nilai | Deskripsi |
---|---|
1 | Sekali |
4 | Harian |
8 | Mingguan |
16 | Bulanan |
32 | Bulanan, relatif terhadap freq_interval |
64 | Jalankan saat layanan Agen SQL dimulai |
128 | Jalankan saat komputer idle |
@freq_interval
Argumen ini menentukan hari-hari ketika suatu pekerjaan dieksekusi.
Argumen ini bergantung pada nilai @freq_type
argumen, seperti diuraikan dalam tabel berikut:
Nilai freq_type | Efek pada freq_interval |
---|---|
1 (sekali) | freq_interval tidak digunakan. |
4 (setiap hari) | Setiap freq_interval hari. |
8 (mingguan) | freq_interval adalah satu atau lebih dari berikut ini (dikombinasikan dengan OR operator logika):1 (Minggu) 2 (Senin) 4 (Selasa) 8 (Rabu) 16 (Kamis) 32 (Jumat) 64 (Sabtu) |
16 (bulanan) | Pada freq_interval hari dalam sebulan. |
32 (kerabat bulanan) | freq_interval adalah salah satu dari berikut ini:1 (Minggu) 2 (Senin) 3 (Selasa) 4 (Rabu) 5 (Kamis) 6 (Jumat) 7 (Sabtu) 8 (Hari) 9 (Hari kerja) 10 (Hari akhir pekan) |
64 (ketika layanan SQLServerAgent dimulai) | freq_interval tidak digunakan. |
128 | freq_interval tidak digunakan. |
@freq_recurrence_factor
Ini menentukan jumlah minggu atau bulan antara jadwal pelaksanaan pekerjaan.
Ini adalah int , dengan default 0
, dan hanya digunakan jika freq_type
adalah 8
, 16
, atau 32
.
@active_start_time
Menentukan waktu pada setiap hari antara @active_start_date
dan @active_end_date
argumen untuk memulai eksekusi pekerjaan. @active_start_time
adalah int , dengan default 000000
, yang menunjukkan pukul 12:00:00 A.M. pada 24 jam, dan harus dimasukkan menggunakan formulir HHMMSS.
@active_start_date
Meskipun tidak termasuk dalam contoh saya di atas, @active_start_date
argumen memungkinkan Anda untuk menentukan tanggal eksekusi pekerjaan dapat dimulai. Ini adalah int , dengan default NULL, yang menunjukkan tanggal hari ini. Tanggal diformat sebagai YYYYMMDD.
@active_end_date
Anda juga dapat memberikan @active_end_date
argumen, yang menentukan tanggal eksekusi pekerjaan dapat dihentikan.
@active_end_date
adalah int , dengan default 99991231
, yang menunjukkan 31 Desember 9999. Tanggal diformat sebagai YYYYMMDD.
Info Lebih Lanjut
Lihat dokumentasi Microsoft untuk sp_add_schedule
dan/atau dokumentasi Microsoft untuk sp_add_jobschedule
untuk detail lebih lanjut tentang berbagai argumen dan nilai yang diterimanya.