Saat Anda membuat pekerjaan Agen Server SQL, Anda memiliki opsi untuk membuat jadwal baru untuk pekerjaan itu atau menggunakan yang sudah ada.
Jadwal pekerjaan dapat dikelola secara independen dari pekerjaan. Anda dapat menggunakan sp_add_schedule
untuk membuat jadwal dan sp_attach_schedule
untuk melampirkan jadwal ke pekerjaan.
Ini memungkinkan Anda untuk melampirkan jadwal yang sama ke beberapa pekerjaan.
Contoh
Misalkan kita membuat pekerjaan menggunakan kode berikut:
USE msdb;
GO
EXEC sp_add_job
@job_name = N'BackupPetHotelDB' ;
GO
EXEC sp_add_jobstep
@job_name = N'BackupPetHotelDB',
@step_name = N'Run the backup',
@subsystem = N'TSQL',
@command = N'BACKUP DATABASE [PetHotel] TO DISK = N''C:\Backups\PetHotel.bak'' WITH CHECKSUM',
@retry_attempts = 5,
@retry_interval = 5;
GO
EXEC sp_add_schedule
@schedule_name = N'RunDailyAM',
@freq_type = 4,
@freq_interval = 4,
@active_start_time = 041000;
GO
EXEC sp_attach_schedule
@job_name = N'BackupPetHotelDB',
@schedule_name = N'RunDailyAM';
GO
EXEC sp_add_jobserver
@job_name = N'BackupPetHotelDB';
GO
Kode itu termasuk sp_add_schedule
prosedur tersimpan. Prosedur ini membuat jadwal yang dapat digunakan oleh sejumlah pekerjaan. Dalam kasus kami, kami memanggil jadwal RunDailyAM
.
Kami kemudian menggunakan sp_attach_schedule
untuk melampirkan jadwal itu ke pekerjaan Agen Server SQL yang baru saja kita buat. Ini adalah prosedur tersimpan yang dapat kita gunakan untuk melampirkan jadwal yang sama ke pekerjaan berikutnya.
Sekarang mari kita buat pekerjaan SQL Server Agent lainnya, tetapi kali ini kita tidak akan menyertakan sp_add_schedule
prosedur:
USE msdb;
GO
EXEC dbo.sp_add_job
@job_name = N'BackupWorldDB' ;
GO
EXEC sp_add_jobstep
@job_name = N'BackupWorldDB',
@step_name = N'Run the backup',
@subsystem = N'TSQL',
@command = N'BACKUP DATABASE [World] TO DISK = N''C:\Backups\World.bak'' WITH CHECKSUM',
@retry_attempts = 5,
@retry_interval = 5;
GO
EXEC sp_attach_schedule
@job_name = N'BackupWorldDB',
@schedule_name = N'RunDailyAM';
GO
EXEC sp_add_jobserver
@job_name = N'BackupWorldDB',
@server_name = N'(LOCAL)';
GO
Kami tidak menggunakan sp_add_schedule
prosedur, karena kami menggunakan jadwal yang sudah dibuat di pekerjaan sebelumnya.
Namun kami melakukannya, gunakan sp_attach_schedule
prosedur tersimpan, karena kami harus melampirkan jadwal yang dibuat sebelumnya ke pekerjaan baru kami.
Jadi kedua pekerjaan sekarang akan berjalan pada jadwal yang sama.
Cari tahu Berapa Banyak Pekerjaan yang Dilampirkan Jadwal
Anda dapat menggunakan sp_help_jobcount
prosedur untuk mengembalikan jumlah pekerjaan yang dilampirkan pada jadwal tertentu. Cukup berikan nama jadwal atau ID saat memanggil prosedur.
Contoh:
EXEC sp_help_jobcount @schedule_name = 'RunDailyAM';
Hasil:
JobCount -------- 2