Dalam artikel ini, saya menyajikan tiga opsi untuk mengembalikan langkah-langkah pekerjaan Agen Server SQL saat menggunakan T-SQL.
Opsi
Anda dapat menggunakan opsi T-SQL berikut untuk mengembalikan langkah-langkah pekerjaan Agen Server SQL:
- Opsi 1 :Jalankan
sp_help_job
prosedur tersimpan. - Opsi 2 :Jalankan
sp_help_jobstep
prosedur tersimpan. - Opsi 3 :Kueri
sysjobsteps
tabel (dan gabungkan dengansysjobs_view
jika diperlukan).
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.sysjobsteps
).
Opsi 1:sp_help_job
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 langkah-langkahnya.
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:sp_help_jobstep
sp_help_jobstep
prosedur tersimpan dirancang khusus untuk mengembalikan langkah-langkah pekerjaan. Tapi hanya itu yang dikembalikan.
Jadi, jika Anda tidak ingin melihat jadwal dan server target, dll, ini yang Anda cari.
Anda dapat melewati sp_help_jobstep
nama pekerjaan atau ID-nya (tetapi tidak keduanya).
Ini contohnya:
EXEC sp_help_jobstep
@job_name = 'SqlAgentTest';
Dan inilah hasil yang terlihat pada pekerjaan dua langkah:
Anda juga dapat menentukan ID langkah jika Anda hanya ingin langkah tertentu dikembalikan. Anda masih harus menentukan untuk pekerjaan apa (baik dengan ID atau namanya).
Berikut ini contoh menentukan langkah kedua dalam pekerjaan:
EXEC sp_help_jobstep
@job_name = 'SqlAgentTest',
@step_id = 2;
ID langkah harus benar-benar ada untuk pekerjaan itu. Misalnya, menentukan ID langkah 3
untuk pekerjaan di atas menghasilkan kesalahan.
Opsi 3:sysjobsteps
Tabel
Opsi lainnya adalah menjalankan kueri terhadap sysjobsteps
meja.
Tabel ini berisi langkah-langkah dari semua pekerjaan, jadi jika Anda hanya menginginkan langkah-langkah untuk pekerjaan tertentu, Anda harus memberikan ID pekerjaan.
Berikut ini contoh kueri sysjobsteps
tabel untuk langkah-langkah pekerjaan tertentu:
SELECT * FROM msdb.dbo.sysjobsteps
WHERE job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
Ini mengembalikan hasil yang mirip dengan sp_help_jobstep
prosedur.
Jika Anda ingin beberapa detail pekerjaan dikembalikan (seperti namanya), Anda dapat menjalankan gabungan antara sysjobsteps
dan sysjobs_view
.
Contoh:
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.