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

Как да използвате един и същ график за множество задачи за агент на SQL Server (T-SQL)

Когато създавате задание на 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DBA - Как да убиете всички процеси на база данни на SQL Server

  2. Какво е SQL Server?

  3. Какъв е най-добрият начин да изберете минималната стойност от няколко колони?

  4. Защо да използвате Select Top 100 процента?

  5. Разделете дял на две в SQL Server (T-SQL)