Als u T-SQL gebruikt, kunt u de sp_add_schedule
. gebruiken opgeslagen procedure om een SQL Server Agent-schema toe te voegen.
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.
U kunt ook sp_add_jobschedule
. gebruiken om het schema te maken en alles met dezelfde procedure toe te voegen.
Voorbeeld van het sp_add_schedule
Werkwijze
Hier is een voorbeeld dat gebruikmaakt van sp_add_schedule
om een nieuw schema aan te maken:
EXEC sp_add_schedule
@schedule_name = N'RunDailyAM',
@freq_type = 4,
@freq_interval = 4,
@active_start_time = 041000;
GO
Deze opgeslagen procedure accepteert meer argumenten dan ik in dit voorbeeld heb opgenomen, maar dit zijn enkele van de meest voorkomende. Zie de tabellen hieronder voor een overzicht van de geaccepteerde waarden.
@schedule_name
is een verplicht argument, maar de andere zijn optioneel en hebben standaardinstellingen voor het geval je ze niet opgeeft.
We kunnen nu sp_attach_schedule
. gebruiken om dat schema aan een bestaande taak toe te voegen:
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).
Voorbeeld van het sp_add_jobschedule
Werkwijze
Hier is een voorbeeld dat gebruikmaakt van sp_add_jobschedule
om een nieuwe planning te maken en deze aan een taak toe te voegen, alles in één keer:
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;
Met deze procedure wordt de @job_name
argument geeft de taaknaam en de @name
argument geeft de naam die u aan het schema wilt geven.
Parameterwaarden
De manier waarop planningsgegevens worden opgeslagen in de msdb database maakt het een beetje lastig als het gaat om het plannen van taken met T-SQL.
Datum/tijd-waarden worden opgeslagen als int soorten. Frequentietype wordt uitgedrukt als een int , evenals de intervalwaarden en verschillende andere opties.
Hieronder vindt u een overzicht van de geaccepteerde waarden voor de parameters in de bovenstaande voorbeelden.
@freq_type
Dit argument geeft aan wanneer een taak moet worden uitgevoerd. Het accepteert de volgende waarden:
Waarde | Beschrijving |
---|---|
1 | Eenmaal |
4 | Dagelijks |
8 | Wekelijks |
16 | Maandelijks |
32 | Maandelijks, relatief tov freq_interval |
64 | Uitvoeren wanneer SQL Agent-service start |
128 | Uitvoeren wanneer de computer niet actief is |
@freq_interval
Dit argument specificeert de dagen dat een taak wordt uitgevoerd.
Dit argument hangt af van de waarde van de @freq_type
argument, zoals uiteengezet in de volgende tabel:
Waarde van freq_type | Effect op freq_interval |
---|---|
1 (eenmaal) | freq_interval is ongebruikt. |
4 (dagelijks) | Elke freq_interval dagen. |
8 (wekelijks) | freq_interval is een of meer van de volgende (gecombineerd met een OR logische operator):1 (Zondag) 2 (Maandag) 4 (Dinsdag) 8 (Woensdag) 16 (Donderdag) 32 (Vrijdag) 64 (zaterdag) |
16 (maandelijks) | Op de freq_interval dag van de maand. |
32 (maandelijks relatief) | freq_interval is een van de volgende:1 (Zondag) 2 (Maandag) 3 (Dinsdag) 4 (Woensdag) 5 (Donderdag) 6 (Vrijdag) 7 (Zaterdag) 8 (Dag) 9 (Weekdag) 10 (Weekenddag) |
64 (wanneer de SQLServerAgent-service start) | freq_interval is ongebruikt. |
128 | freq_interval is ongebruikt. |
@freq_recurrence_factor
Dit specificeert het aantal weken of maanden tussen de geplande uitvoering van een taak.
Dit is int , met een standaardwaarde van 0
, en wordt alleen gebruikt als freq_type
is 8
, 16
, of 32
.
@active_start_time
Specificeert de tijd op een willekeurige dag tussen de @active_start_date
en de @active_end_date
argumenten om een taak uit te voeren. @active_start_time
is int , met een standaardwaarde van 000000
, wat aangeeft 12:00:00 A.M. op een 24-uurs klok, en moet worden ingevoerd met het formulier HMMMSS.
@active_start_date
Hoewel niet opgenomen in mijn bovenstaande voorbeelden, is de @active_start_date
argument stelt u in staat om de datum te specificeren waarop de uitvoering van een taak kan beginnen. Dit is int , met een standaardwaarde van NULL, die de datum van vandaag aangeeft. De datum is opgemaakt als JJJJMMDD.
@active_end_date
U kunt ook een @active_end_date
. opgeven argument, dat de datum aangeeft waarop de uitvoering van een taak kan stoppen.
@active_end_date
is int , met een standaardwaarde van 99991231
, wat 31 december 9999 aangeeft. De datum is opgemaakt als JJJJMMDD.
Meer informatie
Zie de documentatie van Microsoft voor sp_add_schedule
en/of de documentatie van Microsoft voor sp_add_jobschedule
voor meer details over de verschillende argumenten en hun geaccepteerde waarden.