Hvis du er i gang med at oprette et SQL Server Agent-job med T-SQL, spekulerer du måske på, om du skal oprette dets tidsplan med sp_add_schedule lagret procedure eller sp_add_jobschedule procedure.
Her er en hurtig forklaring på forskellen mellem disse to procedurer.
Forskellen
sp_add_scheduleproceduren opretter en tidsplan, men knytter den ikke til nogen job. For at gøre det skal du brugesp_attach_scheduleprocedure.sp_add_jobscheduleprocedure opretter tidsplanen og knytter den til et givent job, alt på én gang.
Derfor sp_add_jobschedule er OK at bruge, hvis du skal oprette en ny tidsplan for et bestemt job, og det job allerede eksisterer. Hvis du opretter en tidsplan for flere job, og ingen af dem eksisterer endnu, kan du bruge sp_add_schedule . Så kan du bruge sp_attach_schedule at knytte det til dine jobs senere.
Men det betyder ikke, at du ikke kan bruge sp_add_schedule i stedet for sp_add_jobschedule hvis jobbet allerede eksisterer.
Brug af sp_add_schedule (i forbindelse med sp_attach_schedule ) giver dig mulighed for at adskille processen med at oprette tidsplaner og vedhæfte dem til job. Du kan stadig bruge denne kombination, selv når du opretter et enkelt job med en enkelt tidsplan.
Med andre ord kan du bruge sp_add_schedule i stedet for sp_add_jobschedule for alle dine SQL Server Agent-job.
Eksempel
sp_add_jobschedule Fremgangsmåde
sp_add_jobschedule procedure opretter en tidsplan for et givet SQL Server Agent-job. Når du kalder denne procedure, skal du angive navnet eller id'et på et job, som du vil have det til at søge.
Grundlæggende opretter denne procedure en tidsplan og knytter den til et enkelt job.
Her er et eksempel på at oprette et job og bruge sp_add_jobschedule gemt procedure:
EXEC sp_add_jobschedule
@job_name = N'BackupMusicDB',
@name = N'Weekly_Sun_3AM',
@freq_type = 8,
@freq_interval = 1,
@freq_recurrence_factor = 1,
@active_start_time = 30000;
Når du ser på sp_add_jobschedule procedure, @job_name argument giver jobnavnet. @name argument giver det navn, du vil give til tidsplanen.
sp_add_schedule Fremgangsmåde
sp_add_schedule procedure giver dig mulighed for at oprette en tidsplan uden at skulle angive et job at vedhæfte det til.
Denne procedure opretter tidsplanen, men den knytter den ikke til nogen job. For at vedhæfte det til et job, skal du bruge sp_attach_schedule procedure.
Her er et eksempel:
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
Når du bruger sp_attach_schedule , skal du angive navnet på jobbet eller dets ID (men ikke begge), samt tidsplanens navn eller ID (men ikke begge dele).
Vedhæftning af en sp_add_jobschedule Tidsplan
Det er vigtigt at bemærke, at sp_attach_schedule kan vedhæfte tidsplaner, der er oprettet med både sp_add_schedule og med sp_add_jobschedule .
Med andre ord, oprettelse af en tidsplan med sp_add_jobschedule begrænser det ikke til kun det job, du specificerede, da du oprettede tidsplanen. den er stadig tilgængelig til at blive knyttet til andre job senere ved hjælp af sp_attach_schedule .