Когато създавате задание на SQL Server Agent, имате възможност да създадете нов график за това задание или да използвате такъв, който вече съществува.
Графиците за работа могат да се управляват независимо от заданията. Можете да използвате sp_add_schedule
за да създадете графика и sp_attach_schedule
да прикачите графика към дадена работа.
Това ви позволява да прикачите един и същ график към множество задания.
Пример
Да предположим, че създаваме задание, използвайки следния код:
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
Този код включва sp_add_schedule
съхранена процедура. Тази процедура създава график, който може да се използва от произволен брой работни места. В нашия случай ние извикахме графика RunDailyAM
.
След това използвахме sp_attach_schedule
за да прикачите този график към заданието на SQL Server Agent, което току-що създадохме. Това е съхранената процедура, която можем да използваме, за да прикачим същия график към следващите задания.
Сега нека създадем друга задача на SQL Server Agent, но този път няма да включим sp_add_schedule
процедура:
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
Не използвахме sp_add_schedule
процедура, защото използвахме графика, който вече беше създаден в предишното задание.
Ние обаче използвахме sp_attach_schedule
съхранена процедура, защото трябваше да прикачим предварително създадения график към новата ни работа.
Така и двете задачи вече ще се изпълняват по един и същ график.
Разберете към колко работни места е приложен график
Можете да използвате sp_help_jobcount
процедура за връщане на броя на работните места, към които е прикачен даден график. Просто посочете името или идентификатора на графика, когато извиквате процедурата.
Пример:
EXEC sp_help_jobcount @schedule_name = 'RunDailyAM';
Резултат:
JobCount -------- 2