Om du håller på att skapa ett SQL Server Agent-jobb med T-SQL kanske du undrar om du ska skapa dess schema med sp_add_schedule
lagrad procedur eller sp_add_jobschedule
förfarande.
Här är en snabb förklaring av skillnaden mellan dessa två procedurer.
Skillnaden
sp_add_schedule
proceduren skapar ett schema, men kopplar det inte till några jobb. För att göra det måste du användasp_attach_schedule
procedur.sp_add_jobschedule
proceduren skapar schemat och kopplar det till ett visst jobb, allt på en gång.
Därför sp_add_jobschedule
är OK att använda om du behöver skapa ett nytt schema för ett specifikt jobb och det jobbet redan finns. Om du skapar ett schema för flera jobb, och inget av dem finns ännu, kan du använda sp_add_schedule
. Sedan kan du använda sp_attach_schedule
att koppla den till dina jobb senare.
Men det betyder inte att du inte kan använda sp_add_schedule
istället för sp_add_jobschedule
om jobbet redan finns.
Använder sp_add_schedule
(i kombination med sp_attach_schedule
) låter dig separera processen för att skapa scheman och bifoga dem till jobb. Du kan fortfarande använda den här kombinationen även när du skapar ett enda jobb med ett enda schema.
Med andra ord kan du använda sp_add_schedule
istället för sp_add_jobschedule
för alla dina SQL Server Agent-jobb.
Exempel
sp_add_jobschedule
Procedur
sp_add_jobschedule
proceduren skapar ett schema för ett givet SQL Server Agent-jobb. När du anropar den här proceduren måste du ange namn eller ID för ett jobb som du vill att det ska ansöka om.
I grund och botten skapar denna procedur ett schema och bifogar det till ett enda jobb.
Här är ett exempel på hur du skapar ett jobb och använder sp_add_jobschedule
lagrad procedur:
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 tittar på sp_add_jobschedule
proceduren, @job_name
argument ger jobbnamnet. @name
argument ger namnet som du vill ge till schemat.
sp_add_schedule
Procedur
sp_add_schedule
proceduren låter dig skapa ett schema utan att behöva ange ett jobb att bifoga det till.
Denna procedur skapar schemat, men den kopplar inte till några jobb. För att bifoga det till ett jobb måste du använda sp_attach_schedule
förfarande.
Här är ett exempel:
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 använder sp_attach_schedule
, måste du ange namnet på jobbet eller dess ID (men inte båda), samt schemanamnet eller ID (men inte båda).
Bifogar ett sp_add_jobschedule
Schema
Det är viktigt att notera att sp_attach_schedule
kan bifoga scheman som skapades med både sp_add_schedule
och med sp_add_jobschedule
.
Med andra ord, skapa ett schema med sp_add_jobschedule
begränsar det inte till bara jobbet du angav när du skapade schemat. den är fortfarande tillgänglig för att kopplas till andra jobb senare med sp_attach_schedule
.