sql >> Database teknologi >  >> RDS >> Sqlserver

sp_add_schedule vs sp_add_jobschedule i SQL Server:Hvad er forskellen?

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 bruge sp_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 .


  1. SQL Server seneste versioner, udgaver og SQL Server-historik

  2. Hent data fra lagret procedure, som har flere resultatsæt

  3. Brug af Geekbench 3.2 til at teste store databaseservere

  4. FEJL:kolonne med relation eksisterer ikke PostgreSQL, Kan ikke køre indsæt forespørgsel