sql >> Databasteknik >  >> RDS >> Sqlserver

sp_add_schedule vs sp_add_jobschedule i SQL Server:Vad är skillnaden?

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ända sp_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 .


  1. TSQL - Lägg till kolumn i alla tabeller i en databas [ Markörexempel]

  2. Hur väljer jag effektivt det tidigare icke-nullvärdet?

  3. En datamodell för händelsehantering

  4. En biblioteksdatamodell