sql >> Databáze >  >> RDS >> Sqlserver

sp_add_schedule vs sp_add_jobschedule v SQL Server:Jaký je rozdíl?

Pokud právě vytváříte úlohu SQL Server Agent pomocí T-SQL, možná vás zajímá, zda vytvořit její plán pomocí sp_add_schedule uložená procedura nebo sp_add_jobschedule postup.

Zde je rychlé vysvětlení rozdílu mezi těmito dvěma postupy.

Rozdíl

  • sp_add_schedule procedura vytvoří plán, ale nepřipojí ho k žádné úloze. Chcete-li to provést, musíte použít sp_attach_schedule postup.
  • sp_add_jobschedule procedura vytvoří rozvrh a připojí jej k dané úloze, vše najednou.

Proto sp_add_jobschedule je v pořádku použít, pokud potřebujete vytvořit nový plán pro konkrétní úlohu a tato úloha již existuje. Pokud vytváříte plán pro více úloh a žádná z nich zatím neexistuje, můžete použít sp_add_schedule . Pak můžete použít sp_attach_schedule k pozdějšímu připojení k vašim úlohám.

To však neznamená, že nemůžete použít sp_add_schedule místo sp_add_jobschedule pokud úloha již existuje.

Pomocí sp_add_schedule (ve spojení s sp_attach_schedule ) umožňuje oddělit proces vytváření rozvrhů a jejich připojování k úlohám. Tuto kombinaci můžete stále používat i při vytváření jedné úlohy s jedním plánem.

Jinými slovy, můžete použít sp_add_schedule místo sp_add_jobschedule pro všechny vaše úlohy SQL Server Agent.

Příklad

sp_add_jobschedule Postup

sp_add_jobschedule procedura vytvoří plán pro danou úlohu SQL Server Agent. Když zavoláte tento postup, musíte zadat název nebo ID úlohy, na kterou se má vztahovat.

V podstatě tento postup vytvoří plán a připojí ho k jedné úloze.

Zde je příklad vytvoření úlohy a použití sp_add_jobschedule uložená procedura:

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;

Když se podíváte na sp_add_jobschedule postup, @job_name argument poskytuje název úlohy. @name argument poskytuje název, který chcete dát plánu.

sp_add_schedule Postup

sp_add_schedule procedura vám umožňuje vytvořit plán, aniž byste museli specifikovat úlohu, ke které jej chcete připojit.

Tento postup vytvoří plán, ale nepřipojí ho k žádné úloze. Chcete-li jej připojit k úloze, musíte použít sp_attach_schedule postup.

Zde je příklad:

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

Když používáte sp_attach_schedule , musíte zadat název úlohy nebo její ID (ale ne obojí) a také název nebo ID plánu (ale ne obojí).

Připojení sp_add_jobschedule Rozvrh

Je důležité si uvědomit, že sp_attach_schedule můžete připojit plány, které byly vytvořeny pomocí obou sp_add_schedule a pomocí sp_add_jobschedule .

Jinými slovy, vytvoření plánu pomocí sp_add_jobschedule neomezuje pouze na úlohu, kterou jste zadali při vytváření plánu. je stále k dispozici pro pozdější připojení k jiným úlohám pomocí sp_attach_schedule .


  1. Detekce přírůstkových změn databáze (Oracle až MongoDB ETL)

  2. Limity SQL NVARCHAR a VARCHAR

  3. Omezení cizího klíče může způsobit cykly nebo více kaskádových cest?

  4. Najděte celkový počet výsledků v dotazu mySQL s offsetem+limitem