Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak używać tego samego harmonogramu dla wielu zadań agenta programu SQL Server (T-SQL)

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CHARINDEX() vs PATINDEX() w SQL Server — jaka jest różnica?

  2. Macierz obsługiwanych wersji SQL Server

  3. Konwertuj „smalldatetime” na „datetime” w SQL Server (przykłady T-SQL)

  4. Jak podzielić ciąg znaków za pomocą ogranicznika za pomocą T-SQL?

  5. Zero impasu SQL z założenia - jakieś wzorce kodowania?