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