sql >> Database teknologi >  >> RDS >> Sqlserver

Opret et SQL Server Agent-skema med T-SQL

Når du bruger T-SQL, kan du bruge sp_add_schedule gemt procedure for at tilføje en SQL Server Agent-plan.

Denne procedure opretter tidsplanen, men den knytter den ikke til nogen job. For at vedhæfte det til et job, skal du bruge sp_attach_schedule procedure.

Du kan også bruge sp_add_jobschedule at oprette tidsplanen og vedhæfte det hele med samme procedure.

Eksempel på sp_add_schedule Fremgangsmåde

Her er et eksempel, der bruger sp_add_schedule for at oprette en ny tidsplan:

EXEC sp_add_schedule 
    @schedule_name = N'RunDailyAM',
    @freq_type = 4,
    @freq_interval = 4,
    @active_start_time = 041000;
GO

Denne lagrede procedure accepterer flere argumenter, end jeg har inkluderet i dette eksempel, men disse er nogle af de mere almindelige. Se tabellerne nedenfor for en oversigt over de accepterede værdier.

@schedule_name er et påkrævet argument, men de andre er valgfrie og har standardindstillinger, hvis du ikke angiver dem.

Vi kan nu bruge sp_attach_schedule for at vedhæfte denne tidsplan til et eksisterende job:


EXEC sp_attach_schedule  
   @job_name = N'BackupPetHotelDB',  
   @schedule_name = N'RunDailyAM';  
GO

Når du bruger sp_attach_schedule , skal du angive navnet på jobbet eller dets ID (men ikke begge), samt tidsplanens navn eller ID (men ikke begge dele).

Eksempel på sp_add_jobschedule Fremgangsmåde

Her er et eksempel, der bruger sp_add_jobschedule at oprette en ny tidsplan og vedhæfte den til et job, alt på én gang:

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 denne procedure vises @job_name argument giver jobnavnet og @name argument giver det navn, du vil give til tidsplanen.

Parameterværdier

Den måde, tidsplandata gemmes på i msdb database gør det en smule vanskeligt, når det kommer til at planlægge job med T-SQL.

Dato/tidsværdier gemmes som int typer. Frekvenstype er udtrykt som en int , ligesom intervalværdierne og forskellige andre muligheder.

Nedenfor er en oversigt over de accepterede værdier for parametrene i ovenstående eksempler.

@freq_type

Dette argument angiver, hvornår et job skal udføres. Den accepterer følgende værdier:

Værdi Beskrivelse
1 En gang
4 Dagligt
8 Ugentligt
16 Månedligt
32 Månedligt i forhold til freq_interval
64 Kør, når SQL Agent-tjenesten starter
128 Kør, når computeren er inaktiv

@freq_interval

Dette argument angiver de dage, et job udføres.

Dette argument afhænger af værdien af ​​@freq_type argument, som skitseret i følgende tabel:

Værdi af freq_type Effekt på freq_interval
1 (en gang) freq_interval er ubrugt.
4 (dagligt) Hver freq_interval dage.
8 (ugentlig) freq_interval er en eller flere af følgende (kombineret med en OR logisk operator):

1 (Søndag)

2 (Mandag)

4 (Tirsdag)

8 (Onsdag)

16 (Torsdag)

32 (Fredag)

64 (lørdag)
16 (månedligt) freq_interval dag i måneden.
32 (månedlig relativ) freq_interval er en af ​​følgende:

1 (Søndag)

2 (Mandag)

3 (Tirsdag)

4 (Onsdag)

5 (Torsdag)

6 (Fredag)

7 (Lørdag)

8 (Dag)

9 (Ugedag)

10 (Weekenddag)
64 (når SQLServerAgent-tjenesten starter) freq_interval er ubrugt.
128 freq_interval er ubrugt.

@freq_recurrence_factor

Dette angiver antallet af uger eller måneder mellem den planlagte udførelse af et job.

Dette er int , med en standard på 0 , og bruges kun hvis freq_type er 8 , 16 eller 32 .

@active_start_time

Angiver tidspunktet på en hvilken som helst dag mellem @active_start_date og @active_end_date argumenter for at påbegynde udførelsen af ​​et job. @active_start_time er int , med en standard på 000000 , hvilket angiver 12:00:00 A.M. på et 24-timers ur, og skal indtastes på formularen HHMMSS.

@active_start_date

Selvom det ikke er inkluderet i mine eksempler ovenfor, er @active_start_date argument giver dig mulighed for at angive datoen, hvor udførelsen af ​​et job kan begynde. Dette er int , med standardværdien NULL, som angiver dagens dato. Datoen er formateret som ÅÅÅÅMMDD.

@active_end_date

Du kan også angive en @active_end_date argument, som angiver datoen, hvor udførelsen af ​​et job kan stoppe.

@active_end_date er int , med en standard på 99991231 , som angiver 31. december 9999. Datoen er formateret som ÅÅÅÅMMDD.

Flere oplysninger

Se Microsofts dokumentation for sp_add_schedule og/eller Microsofts dokumentation for sp_add_jobschedule for flere detaljer om de forskellige argumenter og deres accepterede værdier.


  1. Fuldtekstsøgninger i MySQL:The Good, the Bad and the Ugly

  2. Sådan får du sidste 12 måneders data i MySQL

  3. Hvordan retter jeg fejlen 'Named Pipes Provider, fejl 40 - Kunne ikke åbne en forbindelse til' SQL Server'?

  4. PostgreSQL-replikering til disaster recovery