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

3 Cara Mengembalikan Daftar Pekerjaan Agen SQL Server (T-SQL)

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menemukan prosedur tersimpan yang berisi <teks>?

  2. Menghubungkan Server Bastion ke Server PostgreSQL melalui SSH Tunnel

  3. Bulan antara dua tanggal

  4. Panduan Mudah tentang Cara Menggunakan Subqueries di SQL Server

  5. Bagaimana menemukan gaji maksimum ketiga atau n dari tabel gaji?