SQL Server Agent е услуга на Microsoft Windows, която изпълнява планирани административни задачи, които се наричат jobs в SQL Server.
T-SQL включва голяма колекция от съхранени процедури, които се занимават със задачи на агент на SQL Server.
Тук ще използваме някои от тях, за да създадем и планираме задача на SQL Server Agent.
Можете също да създавате задания на SQL Server Agent чрез GUI (в SSMS), ако предпочитате.
Активиране на Agent XPs
Ако това е първият път, когато създавате задание на SQL Server Agent на вашия екземпляр на SQL Server, вероятно ще трябва да активирате разширените съхранени процедури на SQL Server Agent (Agent XPs).
Ето как да го направите с T-SQL и ето как да го направите с помощта на SSMS GUI.
След като направите това, можете да продължите и да създадете задача на SQL Server Agent като тази по-долу.
Пример
Ето пример за кода, използван за създаване и планиране на задание на SQL Server Agent.
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
Тук използваме пет съхранени процедури, за да създадем и планираме заданието. Повечето от тези процедури приемат много повече (по избор) аргументи от това, което използвах в този пример. За пълен списък с налични аргументи за всяка процедура вижте връзките в таблицата по-долу.
Тези съхранени процедури са в msdb
база данни и можете да видите, че сме задали msdb като текущата база данни, преди да ги стартираме. Като алтернатива можете да ги квалифицирате с името на базата данни (напр. msdb.dbo.sp_add_job...
и др.)
Следващата таблица предоставя бърз преглед на всяка процедура.
Запазена процедура | Описание |
---|---|
sp_add_job | Добавя ново задание, изпълнено от услугата SQL Agent. Вижте уебсайта на Microsoft за повече информация. |
sp_add_jobstep | Добавя стъпка, която изпълнява действителната операция за заданието, което е добавено с sp_add_job . В горния пример добавяме стъпка за архивиране на база данни. Ние уточняваме, че предоставянето на T-SQL команда. @retry_interval е за минути. Вижте уебсайта на Microsoft за повече информация. |
sp_add_schedule | Създава график, който може да се използва от произволен брой работни места. В този случай дадохме @freq_type стойност на 4 което е ежедневно. Дадохме и @freq_interval стойност на 4 , което също е ежедневно. Времето се базира на 24-часов часовник и се въвежда във формата HHMMSS. Нашият пример използва 041000 , което е 04:10:00ч. Вижте връзката на Microsoft по-долу за различните опции, налични при настройка на честотата. Вижте уебсайта на Microsoft за повече информация. |
sp_attach_schedule | Задава график за работа. Тук прикачваме графика, който добавихме с sp_add_schedule към заданието, което добавихме с sp_add_job . Имайте предвид, че графикът и заданието трябва да имат един и същ собственик. Също така, график може да бъде зададен за повече от едно задание и задание може да се изпълнява по повече от един график. Вижте уебсайта на Microsoft за повече информация. |
sp_add_jobserver | Насочва определеното задание към посочения сървър. Това също така приема @server_name аргумент за определяне на сървъра. Стойността по подразбиране е (LOCAL) за локалната машина. В нашия пример използвахме локалната машина и така успяхме да пропуснем този аргумент. Вижте уебсайта на Microsoft за повече информация. |
Преглед на работата
Можете да използвате sp_help_job
съхранена процедура в msdb база данни, за да видите заданията на SQL Server Agent, които са създадени на сървъра.
EXEC sp_help_job;
Ето как изглежда на моята тестова машина:
В този случай има три работни места.
Можете също да видите заданията в Object Explorer, когато имате SQL Server Agent> Jobs възел е разширен.
sp_help_job
Съхранената процедура ви позволява да предоставите името или идентификатора на задание, за да получите по-подробна информация за това задание.
Пример:
EXEC sp_help_job @job_name= 'BackupPetHotelDB';
Резултат:
Резултатите са разделени на основните детайли на заданието, стъпките на заданието, графиците на заданията и целевите сървъри за задание. Това до голяма степен отразява съхранените процедури, които изпълнявахме, когато създавахме заданието.
Вижте документацията на Microsoft за sp_help_job
за повече информация, както и списък с други аргументи, които можете да предоставите.
Тествайте работата
Можете да използвате sp_start_job
съхранена процедура, за да тествате дали работата ви ще се изпълнява. Тази процедура приема името или идентификатора на заданието и ще изпълни заданието веднага щом изпълните процедурата.
Вижте как да стартирате задача за агент на SQL Server с помощта на T-SQL за пример.