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_schedule
proceduren opretter en tidsplan, men knytter den ikke til nogen job. For at gøre det skal du brugesp_attach_schedule
procedure.sp_add_jobschedule
procedure 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
.