sql >> Database >  >> RDS >> Sqlserver

Maak een SQL Server Agent-schema met T-SQL

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.


  1. SQLite-weergave maken

  2. JDBC Create Table Voorbeeld Gebruiksverklaring

  3. Bij verwijderen cascade voor zelfverwijzende tabel

  4. NVL()-functie in Oracle