Dalam artikel ini, saya menyajikan empat opsi untuk menggunakan T-SQL untuk mengembalikan jadwal yang dilampirkan ke pekerjaan Agen Server SQL.
Opsi
Anda dapat menggunakan opsi T-SQL berikut untuk mengembalikan jadwal tugas Agen Server SQL:
- Opsi 1 :Jalankan
sp_help_job
prosedur tersimpan. - Opsi 2 :Jalankan
sp_help_schedule
prosedur tersimpan. - Opsi 3 :Jalankan
sp_help_jobschedule
prosedur tersimpan. - Opsi 4 :Kueri
sysschedules
tabel (dan gabungkan dengansysjobschedules
dansysjobs_view
).
Semua opsi ini berada di msdb database, dan karena itu perlu dijalankan dalam database itu. Anda dapat melakukannya dengan beralih ke msdb database terlebih dahulu, atau dengan mengkualifikasi objek dengan tepat (mis. msdb.dbo.sysschedules
).
Opsi 1:sp_help_job
Prosedur Tersimpan
Saat Anda menelepon sp_help_job
tanpa argumen apa pun, itu hanya mengembalikan daftar pekerjaan. Namun saat Anda memberikan nama atau ID suatu pekerjaan, pekerjaan tersebut mencantumkan detail pekerjaan tersebut, termasuk jadwalnya.
Ini contohnya:
USE msdb;
EXEC sp_help_job
@job_name = 'SqlAgentTest';
Hasil:
Ini mencantumkan pekerjaan, serta langkah-langkah pekerjaan, jadwal, dan server target. Dalam hal ini, ada dua jadwal yang dilampirkan pada pekerjaan.
Berikut contoh kode saat menggunakan ID:
EXEC sp_help_job
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
Saat menggunakan ID, Anda dapat menghilangkan nama parameter jika diinginkan.
Contoh:
EXEC sp_help_job '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
Sintaks
Sintaks lengkap sp_help_job
seperti ini:
sp_help_job { [ @job_id = ] job_id
[ @job_name = ] 'job_name' }
[ , [ @job_aspect = ] 'job_aspect' ]
[ , [ @job_type = ] 'job_type' ]
[ , [ @owner_login_name = ] 'login_name' ]
[ , [ @subsystem = ] 'subsystem' ]
[ , [ @category_name = ] 'category' ]
[ , [ @enabled = ] enabled ]
[ , [ @execution_status = ] status ]
[ , [ @date_comparator = ] 'date_comparison' ]
[ , [ @date_created = ] date_created ]
[ , [ @date_last_modified = ] date_modified ]
[ , [ @description = ] 'description_pattern' ]
Lihat dokumentasi Microsoft untuk sp_help_job
untuk penjelasan setiap parameter, serta nilai yang diterima masing-masing.
Opsi 2:sp_help_schedule
Prosedur Tersimpan
sp_help_schedule
prosedur tersimpan dirancang khusus untuk mengembalikan jadwal.
Jika Anda menjalankannya tanpa memberikan argumen apa pun, itu akan mengembalikan semua jadwal dalam contoh:
EXEC sp_help_schedule;
Untuk mendapatkan informasi untuk jadwal tertentu, berikan nama jadwal atau ID-nya:
EXEC sp_help_schedule
@schedule_name = 'Run_Sat_6AM';
Meskipun sp_help_schedule
tidak mengembalikan jadwal untuk pekerjaan tertentu, Anda dapat menggunakannya untuk mengembalikan hanya jadwal yang dilampirkan ke pekerjaan.
@attached_schedules_only
parameternya adalah bit , dengan default 0
, yang berarti mengembalikan jadwal terlampir dan tidak terlampir. Melewati nilai 1
membatasinya hanya pada jadwal terlampir.
Contoh:
EXEC sp_help_schedule
@attached_schedules_only = 1;
Hal lain yang dapat Anda lakukan adalah menggunakan @include_description
parameter untuk menentukan apakah akan menyertakan deskripsi jadwal dalam kumpulan hasil atau tidak.
Lihat Menggunakan sp_help_schedule
di SQL Server untuk informasi dan contoh lebih lanjut.
Opsi 3:sp_help_jobschedule
Prosedur Tersimpan
sp_help_jobschedule
prosedur tersimpan mengembalikan informasi tentang penjadwalan pekerjaan.
Contoh:
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest';
Ini mengembalikan daftar jadwal yang dilampirkan ke pekerjaan yang ditentukan.
Anda juga dapat memberikan ID atau nama jadwal untuk mengembalikan jadwal tersebut saja.
Saat Anda menelepon sp_help_jobschedule
, Anda harus memberikan nama pekerjaan atau ID-nya (tetapi tidak keduanya), atau ID jadwal. Anda juga dapat melewati schedule_name
tetapi hanya dalam kombinasi dengan ID pekerjaan atau namanya.
Kombinasi argumen yang diterima agak rumit. Lihat Menggunakan sp_help_jobschedule
di SQL Server untuk penjelasan lebih rinci dan lebih banyak contoh.
Opsi 4:sysschedules
tabel (dan lainnya)
Anda dapat menanyakan sysschedules
tabel dan gabungkan dengan tabel seperti sysjobschedules
dan sysjobs_view
untuk mengembalikan daftar pekerjaan dan jadwal terkait.
Contoh:
SELECT
jv.name,
jv.description,
s.schedule_id,
s.name,
s.freq_type,
s.freq_interval,
s.freq_subday_type,
s.freq_subday_interval,
js.next_run_date,
js.next_run_time
FROM msdb.dbo.sysjobs_view jv
INNER JOIN msdb.dbo.sysjobschedules js
ON jv.job_id = js.job_id
INNER JOIN msdb.dbo.sysschedules s
ON s.schedule_id = js.schedule_id
ORDER BY jv.name, s.name;
Hasil:
Dalam hal ini saya menggunakan gabungan dalam untuk mengembalikan hanya jadwal yang memiliki pekerjaan terkait dan sebaliknya.
Anda dapat beralih ke gabungan kanan untuk mengembalikan semua jadwal, terlepas dari apakah itu dilampirkan ke pekerjaan, atau bergabung ke kiri untuk mengembalikan semua pekerjaan, terlepas dari apakah mereka memiliki jadwal terlampir. Atau Anda dapat menggunakan gabungan penuh untuk mengembalikan semuanya.