Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

3 Cara Mendapatkan Job Steps dari SQL Server Agent Job (T-SQL)

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 dengan sysjobs_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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. String_agg untuk SQL Server sebelum 2017

  2. Bagaimana Anda mentransfer atau mengekspor data SQL Server 2005 ke Excel?

  3. Pernyataan SQL Server RAISERROR dengan Contoh Sederhana

  4. Gunakan FILE_IDEX() untuk Mengembalikan ID File Database di SQL Server

  5. Migrasi Cloud 101:Pindah dari SQL Server ke Azure