sql >> Databasteknik >  >> RDS >> Sqlserver

Skapa ett SQL Server-agentschema med T-SQL

NÀr du anvÀnder T-SQL kan du anvÀnda sp_add_schedule lagrad procedur för att lÀgga till ett SQL Server Agent-schema.

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.

Du kan ocksÄ anvÀnda sp_add_jobschedule för att skapa schemat och bifoga allt med samma procedur.

Exempel pÄ sp_add_schedule Procedur

HÀr Àr ett exempel som anvÀnder sp_add_schedule för att skapa ett nytt schema:

EXEC sp_add_schedule 
    @schedule_name = N'RunDailyAM',
    @freq_type = 4,
    @freq_interval = 4,
    @active_start_time = 041000;
GO

Denna lagrade procedur accepterar fler argument Àn jag har inkluderat i det hÀr exemplet, men dessa Àr nÄgra av de vanligaste. Se tabellerna nedan för en översikt över de accepterade vÀrdena.

@schedule_name Àr ett obligatoriskt argument, men de andra Àr valfria och har standardinstÀllningar om du inte anger dem.

Vi kan nu anvÀnda sp_attach_schedule för att bifoga det schemat till ett befintligt jobb:


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).

Exempel pÄ sp_add_jobschedule Procedur

HÀr Àr ett exempel som anvÀnder sp_add_jobschedule för att skapa ett nytt schema och bifoga det till ett jobb, allt pÄ en gÄng:

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;

Med denna procedur visas @job_name argumentet ger jobbnamnet och @name argument ger namnet som du vill ge till schemat.

ParametervÀrden

Hur schemadata lagras i msdb databasen gör det lite knepigt nÀr det gÀller att schemalÀgga jobb med T-SQL.

Datum/tid-vÀrden lagras som int typer. Frekvenstyp uttrycks som en int , liksom intervallvÀrdena och olika andra alternativ.

Nedan finns en översikt över de accepterade vÀrdena för parametrarna i exemplen ovan.

@freq_type

Detta argument anger nÀr ett jobb ska köras. Den accepterar följande vÀrden:

VĂ€rde Beskrivning
1 En gÄng
4 Dagligen
8 Veckovis
16 MĂ„natlig
32 MÄnatlig, i förhÄllande till freq_interval
64 Kör nÀr SQL Agent-tjÀnsten startar
128 Kör nÀr datorn Àr inaktiv

@freq_interval

Detta argument anger dagar som ett jobb körs.

Detta argument beror pÄ vÀrdet för @freq_type argument, som beskrivs i följande tabell:

VÀrde pÄ freq_type Effekt pÄ freq_interval
1 (en gÄng) freq_interval Àr oanvÀnd.
4 (dagligen) Varje freq_interval dagar.
8 (veckovis) freq_interval Àr ett eller flera av följande (kombinerat med en OR logisk operator):

1 (söndag)

2 (mÄndag)

4 (tisdag)

8 (onsdag)

16 (torsdag)

32 (Fredag)

64 (lördag)
16 (mÄnadsvis) PÄ freq_interval dag i mÄnaden.
32 (mÄnatlig relativ) freq_interval Àr nÄgot av följande:

1 (söndag)

2 (mÄndag)

3 (tisdag)

4 (onsdag)

5 (torsdag)

6 (Fredag)

7 (lördag)

8 (Dag)

9 (Veckodag)

10 (helgdag)
64 (nÀr SQLServerAgent-tjÀnsten startar) freq_interval Àr oanvÀnd.
128 freq_interval Àr oanvÀnd.

@freq_recurrence_factor

Detta anger antalet veckor eller mÄnader mellan det schemalagda utförandet av ett jobb.

Det hÀr Àr int , med standardvÀrdet 0 , och anvÀnds endast om freq_type Àr 8 , 16 eller 32 .

@active_start_time

Anger tiden pÄ vilken dag som helst mellan @active_start_date och @active_end_date argument för att börja utföra ett jobb. @active_start_time Àr int , med standardvÀrdet 000000 , vilket indikerar 12:00:00 A.M. pÄ en 24-timmars klocka och mÄste anges med formulÀret HHMMSS.

@active_start_date

Även om det inte ingĂ„r i mina exempel ovan, @active_start_date argument lĂ„ter dig ange datumet dĂ„ utförandet av ett jobb kan börja. Det hĂ€r Ă€r int , med standardvĂ€rdet NULL, vilket anger dagens datum. Datumet Ă€r formaterat som ÅÅÅÅMMDD.

@active_end_date

Du kan ocksÄ ange en @active_end_date argument, som anger datumet dÄ utförandet av ett jobb kan stoppas.

@active_end_date Ă€r int , med standardvĂ€rdet 99991231 , vilket indikerar 31 december 9999. Datumet Ă€r formaterat som ÅÅÅÅMMDD.

Mer information

Se Microsofts dokumentation för sp_add_schedule och/eller Microsofts dokumentation för sp_add_jobschedule för mer information om de olika argumenten och deras accepterade vÀrden.


  1. Java:Hur man infogar CLOB i Oracle-databasen

  2. Statisk och dynamisk datamaskering i FieldShield

  3. MySQL GROUP BY beteende

  4. Bootstrappa SQL Express frÄn WiX?