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.