Podczas tworzenia zadania agenta programu SQL Server masz możliwość utworzenia nowego harmonogramu dla tego zadania lub użycia już istniejącego.
Harmonogramami zadań można zarządzać niezależnie od zadań. Możesz użyć sp_add_schedule
aby utworzyć harmonogram i sp_attach_schedule
dołączyć harmonogram do pracy.
Dzięki temu możesz dołączyć ten sam harmonogram do wielu zadań.
Przykład
Załóżmy, że tworzymy zadanie za pomocą następującego kodu:
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
Ten kod zawierał sp_add_schedule
procedura składowana. Ta procedura tworzy harmonogram, który może być używany przez dowolną liczbę zadań. W naszym przypadku nazwaliśmy harmonogram RunDailyAM
.
Następnie użyliśmy sp_attach_schedule
aby dołączyć ten harmonogram do zadania SQL Server Agent, które właśnie utworzyliśmy. Jest to procedura składowana, której możemy użyć do dołączenia tego samego harmonogramu do kolejnych zadań.
Teraz utwórzmy kolejne zadanie agenta SQL Server, ale tym razem nie uwzględnimy 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
Nie korzystaliśmy z sp_add_schedule
procedury, ponieważ użyliśmy harmonogramu, który został już utworzony w poprzednim zadaniu.
Użyliśmy jednak sp_attach_schedule
procedura składowana, ponieważ musieliśmy dołączyć wcześniej utworzony harmonogram do naszego nowego zadania.
Oba zadania będą teraz działać według tego samego harmonogramu.
Dowiedz się, do ilu zadań jest dołączony harmonogram
Możesz użyć sp_help_jobcount
procedura zwracająca liczbę zadań, do których jest dołączony dany harmonogram. Wystarczy podać nazwę harmonogramu lub identyfikator podczas wywoływania procedury.
Przykład:
EXEC sp_help_jobcount @schedule_name = 'RunDailyAM';
Wynik:
JobCount -------- 2