Seringkali cara tercepat untuk mendapatkan daftar tugas SQL Server Agent adalah dengan memperluas node SQL Server Agent di SSMS Object Explorer.
Tapi itu bukan satu-satunya cara. Dan tergantung pada lingkungan Anda, itu bahkan mungkin bukan pilihan. Jika Anda tidak memiliki SSMS atau alat database yang memungkinkan Anda melihat tugas Agen Server SQL, Anda mungkin perlu menggunakan T-SQL.
Dalam artikel ini, saya menyajikan tiga opsi untuk mengembalikan daftar pekerjaan Agen Server SQL saat menggunakan T-SQL.
Opsi
Anda dapat menggunakan opsi berikut untuk mengembalikan daftar pekerjaan Agen Server SQL dengan T-SQL:
- Opsi 1 :Jalankan
sp_help_job
prosedur tersimpan. - Opsi 2 :Kueri
sysjobs_view
lihat. - Opsi 3 :Kueri
sysjobs
meja secara langsung.
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.sysjobs_view
).
Opsi 1:sp_help_job
Saat menggunakan sp_help_job
untuk mengembalikan daftar tugas Agen Server SQL, jalankan saja tanpa argumen apa pun.
Seperti ini:
USE msdb;
EXEC sp_help_job;
Dalam hal ini saya beralih ke msdb database terlebih dahulu, yang berarti saya tidak perlu sepenuhnya memenuhi syarat prosedur dengan nama dan skema database.
Inilah yang terlihat ketika saya menggunakan SSMS untuk menjalankannya di lingkungan pengujian saya:
Mengembalikan Pekerjaan Tertentu
Anda dapat menggunakan prosedur tersimpan yang sama untuk mengembalikan detail salah satu dari pekerjaan tersebut. Saat Anda melakukannya, Anda mendapatkan lebih banyak detail daripada yang Anda dapatkan saat mencantumkan semua pekerjaan.
Untuk mendapatkan detail pekerjaan, Anda harus memberikan nama atau ID pekerjaan.
Ini contohnya:
EXEC sp_help_job
@job_name = 'SqlAgentTest';
Hasil:
Ini mencantumkan pekerjaan, serta langkah pekerjaan, jadwal, dan server target.
Berikut contoh kode saat menggunakan ID:
EXEC sp_help_job
@job_id = '343D9F2A-070A-4367-BF69-4248FFF57D70';
Saat menggunakan ID, Anda dapat menghilangkan nama parameter jika diinginkan.
Contoh:
EXEC sp_help_job '343D9F2A-070A-4367-BF69-4248FFF57D70';
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:sysjobs_view
Lihat
Anda dapat menggunakan sysjobs_view
untuk mengembalikan daftar tugas SQL Server Agent.
Contoh:
SELECT * FROM msdb.dbo.sysjobs_view;
Dalam hal ini saya memenuhi syarat nama tampilan dengan database dan skema.
Tampilan ini mengembalikan hasil yang serupa (tetapi sedikit berbeda) yang disetel ke sp_help_job
prosedur tersimpan saat digunakan tanpa argumen.
Jika Anda menginginkan detail pekerjaan seperti langkah, jadwal, dll, Anda harus menggabungkannya dengan tabel lain, seperti sysjobsteps
, sysjobschedules
, sysjobactivity
, sysjobhistory
, dll.
Berikut ini contoh menggabungkannya dengan sysjobsteps
tabel:
SELECT
jv.name,
jv.description,
jv.start_step_id,
js.step_id,
js.step_name
FROM msdb.dbo.sysjobs_view jv
LEFT JOIN msdb.dbo.sysjobsteps js
ON jv.job_id = js.job_id;
Inilah hasilnya di lingkungan pengujian saya:
Dengan ini menjadi gabungan kiri, ini mencakup pekerjaan yang tidak memiliki langkah apa pun (lihat NULL
di step_id
dan step_name
kolom untuk pekerjaan yang disebut TestJob
).
Untuk membatasinya hanya pada pekerjaan dengan langkah-langkah, gunakan gabungan dalam.
Opsi 3:sysjobs
Tabel
Berikut ini contoh langsung ke sysjobs
tabel:
SELECT * FROM msdb.dbo.sysjobs;
Seperti tampilan, jika Anda menginginkan detail pekerjaan seperti langkah, jadwal, dll, Anda harus menggabungkannya dengan tabel lain, seperti sysjobsteps
, sysjobschedules
, sysjobactivity
, sysjobhistory
, dll.
Biasanya disarankan untuk menanyakan tampilan daripada tabel secara langsung.