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_jobprosedur tersimpan. - Opsi 2 :Jalankan
sp_help_jobstepprosedur tersimpan. - Opsi 3 :Kueri
sysjobstepstabel (dan gabungkan dengansysjobs_viewjika 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.