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.