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

4 Cara Mendapatkan Daftar Jadwal di SQL Server Agent (T-SQL)

Dalam artikel ini, saya menyajikan empat opsi untuk menggunakan T-SQL untuk mengembalikan jadwal yang dilampirkan ke pekerjaan Agen Server SQL.

Opsi

Anda dapat menggunakan opsi T-SQL berikut untuk mengembalikan jadwal tugas Agen Server SQL:

  • Opsi 1 :Jalankan sp_help_job prosedur tersimpan.
  • Opsi 2 :Jalankan sp_help_schedule prosedur tersimpan.
  • Opsi 3 :Jalankan sp_help_jobschedule prosedur tersimpan.
  • Opsi 4 :Kueri sysschedules tabel (dan gabungkan dengan sysjobschedules dan sysjobs_view ).

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.sysschedules ).

Opsi 1:sp_help_job Prosedur Tersimpan

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 jadwalnya.

Ini contohnya:

USE msdb;
EXEC sp_help_job 
	@job_name = 'SqlAgentTest';

Hasil:

Ini mencantumkan pekerjaan, serta langkah-langkah pekerjaan, jadwal, dan server target. Dalam hal ini, ada dua jadwal yang dilampirkan pada pekerjaan.

Berikut contoh kode saat menggunakan ID:

EXEC sp_help_job 
	@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';

Saat menggunakan ID, Anda dapat menghilangkan nama parameter jika diinginkan.

Contoh:

EXEC sp_help_job '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';

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_schedule Prosedur Tersimpan

sp_help_schedule prosedur tersimpan dirancang khusus untuk mengembalikan jadwal.

Jika Anda menjalankannya tanpa memberikan argumen apa pun, itu akan mengembalikan semua jadwal dalam contoh:

EXEC sp_help_schedule;

Untuk mendapatkan informasi untuk jadwal tertentu, berikan nama jadwal atau ID-nya:

EXEC sp_help_schedule
	@schedule_name = 'Run_Sat_6AM';

Meskipun sp_help_schedule tidak mengembalikan jadwal untuk pekerjaan tertentu, Anda dapat menggunakannya untuk mengembalikan hanya jadwal yang dilampirkan ke pekerjaan.

@attached_schedules_only parameternya adalah bit , dengan default 0 , yang berarti mengembalikan jadwal terlampir dan tidak terlampir. Melewati nilai 1 membatasinya hanya pada jadwal terlampir.

Contoh:

EXEC sp_help_schedule
	@attached_schedules_only = 1;

Hal lain yang dapat Anda lakukan adalah menggunakan @include_description parameter untuk menentukan apakah akan menyertakan deskripsi jadwal dalam kumpulan hasil atau tidak.

Lihat Menggunakan sp_help_schedule di SQL Server untuk informasi dan contoh lebih lanjut.

Opsi 3:sp_help_jobschedule Prosedur Tersimpan

sp_help_jobschedule prosedur tersimpan mengembalikan informasi tentang penjadwalan pekerjaan.

Contoh:

EXEC sp_help_jobschedule
	@job_name = 'SqlAgentTest';

Ini mengembalikan daftar jadwal yang dilampirkan ke pekerjaan yang ditentukan.

Anda juga dapat memberikan ID atau nama jadwal untuk mengembalikan jadwal tersebut saja.

Saat Anda menelepon sp_help_jobschedule , Anda harus memberikan nama pekerjaan atau ID-nya (tetapi tidak keduanya), atau ID jadwal. Anda juga dapat melewati schedule_name tetapi hanya dalam kombinasi dengan ID pekerjaan atau namanya.

Kombinasi argumen yang diterima agak rumit. Lihat Menggunakan sp_help_jobschedule di SQL Server untuk penjelasan lebih rinci dan lebih banyak contoh.

Opsi 4:sysschedules tabel (dan lainnya)

Anda dapat menanyakan sysschedules tabel dan gabungkan dengan tabel seperti sysjobschedules dan sysjobs_view untuk mengembalikan daftar pekerjaan dan jadwal terkait.

Contoh:

SELECT
	jv.name,
	jv.description,
	s.schedule_id,
	s.name,
	s.freq_type,
	s.freq_interval,
	s.freq_subday_type,
	s.freq_subday_interval,
	js.next_run_date,
	js.next_run_time
FROM msdb.dbo.sysjobs_view jv
INNER JOIN msdb.dbo.sysjobschedules js
ON jv.job_id = js.job_id
INNER JOIN msdb.dbo.sysschedules s
ON s.schedule_id = js.schedule_id
ORDER BY jv.name, s.name;

Hasil:

Dalam hal ini saya menggunakan gabungan dalam untuk mengembalikan hanya jadwal yang memiliki pekerjaan terkait dan sebaliknya.

Anda dapat beralih ke gabungan kanan untuk mengembalikan semua jadwal, terlepas dari apakah itu dilampirkan ke pekerjaan, atau bergabung ke kiri untuk mengembalikan semua pekerjaan, terlepas dari apakah mereka memiliki jadwal terlampir. Atau Anda dapat menggunakan gabungan penuh untuk mengembalikan semuanya.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan tanggal dari nomor minggu di T-SQL

  2. Bagaimana cara menghilangkan batasan default SQL tanpa mengetahui namanya?

  3. Terhubung ke Database MSSQL menggunakan Flask-SQLAlchemy

  4. bisakah kita memiliki kunci asing yang bukan kunci utama di tabel lain?

  5. Periksa Surat Tidak Terkirim di SQL Server (T-SQL)