sql >> Database >  >> RDS >> Sqlserver

sp_add_schedule vs sp_add_jobschedule in SQL Server:wat is het verschil?

Als u bezig bent met het maken van een SQL Server Agent-taak met T-SQL, vraagt ​​u zich misschien af ​​of u de bijbehorende planning wilt maken met de sp_add_schedule opgeslagen procedure of de sp_add_jobschedule procedure.

Hier volgt een korte uitleg van het verschil tussen deze twee procedures.

Het verschil

  • De sp_add_schedule procedure maakt een planning aan, maar koppelt deze niet aan taken. Om dat te doen, moet je de sp_attach_schedule . gebruiken procedure.
  • Het sp_add_jobschedule procedure maakt het schema en koppelt het aan een bepaalde taak, alles in één keer.

Daarom sp_add_jobschedule is OK om te gebruiken als u een nieuw schema voor een specifieke taak moet maken en die taak al bestaat. Als u een planning maakt voor meerdere taken en er bestaat nog geen van deze, kunt u sp_add_schedule gebruiken . Dan kun je sp_attach_schedule . gebruiken om het later aan uw taken toe te voegen.

Maar dat wil niet zeggen dat je sp_add_schedule niet kunt gebruiken in plaats van sp_add_jobschedule als de baan al bestaat.

sp_add_schedule gebruiken (in combinatie met sp_attach_schedule ) kunt u het proces van het maken van schema's en het koppelen ervan aan taken scheiden. U kunt deze combinatie nog steeds gebruiken, zelfs als u een enkele taak maakt met een enkele planning.

Met andere woorden, u kunt sp_add_schedule . gebruiken in plaats van sp_add_jobschedule voor al uw SQL Server Agent-taken.

Voorbeeld

Het sp_add_jobschedule Werkwijze

Het sp_add_jobschedule procedure maakt een planning voor een bepaalde SQL Server Agent-taak. Wanneer u deze procedure aanroept, moet u de naam of het ID opgeven van een functie waarop u deze wilt toepassen.

Kortom, deze procedure creëert een schema en koppelt dit aan een enkele taak.

Hier is een voorbeeld van het maken van een taak en het gebruik van de sp_add_jobschedule opgeslagen 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;

Als je kijkt naar het sp_add_jobschedule procedure, de @job_name argument geeft de taaknaam. De @name argument geeft de naam die u aan het schema wilt geven.

De sp_add_schedule Werkwijze

De sp_add_schedule procedure kunt u een planning maken zonder dat u een taak hoeft op te geven waaraan u deze wilt koppelen.

Deze procedure maakt het schema, maar koppelt het niet aan taken. Om het aan een taak te koppelen, moet u de sp_attach_schedule . gebruiken procedure.

Hier is een voorbeeld:

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

Wanneer u sp_attach_schedule . gebruikt , moet u de naam van de taak of de ID (maar niet beide) opgeven, evenals de planningsnaam of ID (maar niet beide).

Een sp_add_jobschedule bijvoegen Schema

Het is belangrijk op te merken dat sp_attach_schedule kan schema's bijvoegen die zijn gemaakt met zowel sp_add_schedule en met sp_add_jobschedule .

Met andere woorden, een planning maken met sp_add_jobschedule beperkt het niet tot alleen de taak die u hebt opgegeven bij het maken van het schema. het is nog steeds beschikbaar om later aan andere taken te worden toegevoegd met behulp van sp_attach_schedule .


  1. Transacties in SQL begrijpen

  2. ENUM (opsomming) gegevenstype in MySQL:Top 12 feiten en handige tips

  3. Vraag laatste N gerelateerde rijen per rij op

  4. 5 redenen waarom u een goede database nodig heeft