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