Quando crei un processo di SQL Server Agent, hai la possibilità di creare una nuova pianificazione per quel processo o di utilizzarne uno già esistente.
Le pianificazioni dei lavori possono essere gestite indipendentemente dai lavori. Puoi usare sp_add_schedule
per creare la pianificazione e sp_attach_schedule
per allegare la pianificazione a un lavoro.
Ciò ti consente di allegare la stessa pianificazione a più lavori.
Esempio
Supponiamo di creare un lavoro utilizzando il seguente codice:
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
Quel codice includeva sp_add_schedule
procedura memorizzata. Questa procedura crea una pianificazione che può essere utilizzata da un numero qualsiasi di lavori. Nel nostro caso, abbiamo chiamato la pianificazione RunDailyAM
.
Abbiamo quindi utilizzato sp_attach_schedule
per allegare tale pianificazione al processo di SQL Server Agent appena creato. Questa è la procedura memorizzata che possiamo utilizzare per allegare la stessa pianificazione ai lavori successivi.
Ora creiamo un altro processo di SQL Server Agent, ma questa volta non includeremo il sp_add_schedule
procedura:
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
Non abbiamo utilizzato il sp_add_schedule
procedura, perché abbiamo utilizzato la pianificazione che era già stata creata nel lavoro precedente.
Tuttavia, abbiamo utilizzato sp_attach_schedule
stored procedure, perché dovevamo allegare la pianificazione precedentemente creata al nostro nuovo lavoro.
Quindi entrambi i lavori verranno eseguiti con la stessa pianificazione.
Scopri a quanti lavori è allegato un programma
Puoi usare sp_help_jobcount
procedura per restituire il numero di lavori a cui è allegata una determinata pianificazione. Basta fornire il nome o l'ID della pianificazione quando si chiama la procedura.
Esempio:
EXEC sp_help_jobcount @schedule_name = 'RunDailyAM';
Risultato:
JobCount -------- 2