sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan bruges den samme tidsplan til flere SQL Server Agent-job (T-SQL)

Når du opretter et SQL Server Agent-job, har du mulighed for at oprette en ny tidsplan for det pågældende job eller bruge en, der allerede eksisterer.

Jobplaner kan administreres uafhængigt af job. Du kan bruge sp_add_schedule for at oprette tidsplanen og sp_attach_schedule at vedhæfte tidsplanen til et job.

Dette giver dig mulighed for at knytte den samme tidsplan til flere job.

Eksempel

Antag, at vi opretter et job ved hjælp af følgende kode:

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

Denne kode inkluderede sp_add_schedule gemt procedure. Denne procedure opretter en tidsplan, der kan bruges af et vilkårligt antal job. I vores tilfælde kaldte vi tidsplanen RunDailyAM .

Vi brugte derefter sp_attach_schedule at vedhæfte den tidsplan til det SQL Server Agent-job, vi lige har oprettet. Dette er den lagrede procedure, som vi kan bruge til at vedhæfte den samme tidsplan til efterfølgende job.

Lad os nu oprette endnu et SQL Server Agent-job, men denne gang inkluderer vi ikke sp_add_schedule procedure:

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

Vi brugte ikke sp_add_schedule procedure, fordi vi brugte den tidsplan, der allerede var oprettet i det forrige job.

Vi brugte dog sp_attach_schedule gemt procedure, fordi vi skulle vedhæfte den tidligere oprettede tidsplan til vores nye job.

Så begge job vil nu køre efter samme tidsplan.

Find ud af, hvor mange jobs der er knyttet et skema til

Du kan bruge sp_help_jobcount procedure for at returnere det antal job, som en given tidsplan er knyttet til. Angiv blot tidsplanens navn eller ID, når du kalder proceduren.

Eksempel:

EXEC sp_help_jobcount @schedule_name = 'RunDailyAM';

Resultat:

JobCount
--------
 2


  1. SQLiteConstraintException-fejl vises efter start af hver aktivitet

  2. Hvordan viser man alle privilegier fra en bruger i Oracle?

  3. Hvordan kan jeg bruge UUID'er i SQLAlchemy?

  4. 8 måder at tilføje dage til en dato i MariaDB