Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Създайте задание за агент на SQL Server с помощта на T-SQL

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 за пример.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използвайки T-SQL, върнете n-ти разделен елемент от низ

  2. Добавяне на идентичност към съществуваща колона

  3. Свържете се с базата данни MSSQL с помощта на Flask-SQLAlchemy

  4. Експортирайте данни от SQL Server в Excel и текстов файл чрез използване на пакет SSIS

  5. sql сървър невалидно име на обект - но таблиците са изброени в списъка с SSMS таблици