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

Opret et SQL Server Agent Job ved hjælp af T-SQL

SQL Server Agent er en Microsoft Windows-tjeneste, der udfører planlagte administrative opgaver, som kaldes jobs i SQL Server.

T-SQL indeholder en stor samling af lagrede procedurer, der omhandler SQL Server Agent-job.

Her vil vi bruge nogle af dem til at oprette og planlægge et SQL Server Agent-job.

Du kan også oprette SQL Server Agent-job via GUI'en (i SSMS), hvis du foretrækker det.

Aktiver Agent XP'er

Hvis det er første gang, du opretter et SQL Server Agent-job på din SQL Server-instans, skal du sandsynligvis aktivere SQL Server Agent-udvidede lagrede procedurer (Agent XP'er).

Sådan gør du det ved hjælp af T-SQL, og her er, hvordan du gør det ved hjælp af SSMS GUI.

Når du har gjort det, kan du fortsætte og oprette et SQL Server Agent-job som det nedenfor.

Eksempel

Her er et eksempel på den kode, der bruges til at oprette og planlægge et SQL Server Agent-job.

USE msdb;  
GO  
EXEC sp_add_job  
    @job_name = N'BackupPetHotelDB' ;  
GO  
EXEC sp_add_jobstep  
    @job_name = N'BackupPetHotelDB',  
    @step_name = N'Run the backup',  
    @subsystem = N'TSQL',  
    @command = N'BACKUP DATABASE [PetHotel] TO DISK = N''C:\Backups\PetHotel.bak'' WITH CHECKSUM',
    @retry_attempts = 5,  
    @retry_interval = 5;  
GO
EXEC sp_add_schedule 
    @schedule_name = N'RunDailyAM',
    @freq_type = 4,
    @freq_interval = 4,
    @active_start_time = 041000;
GO  
EXEC sp_attach_schedule  
   @job_name = N'BackupPetHotelDB',  
   @schedule_name = N'RunDailyAM';  
GO  
EXEC sp_add_jobserver  
    @job_name = N'BackupPetHotelDB';  
GO

Her bruger vi fem lagrede procedurer for at oprette og planlægge jobbet. De fleste af disse procedurer accepterer meget flere (valgfri) argumenter end hvad jeg har brugt i dette eksempel. For en komplet liste over tilgængelige argumenter for hver procedure, se linkene i tabellen nedenfor.

Disse lagrede procedurer er i msdb database, og du kan se, at vi sætter msdb som den aktuelle database, før vi kørte dem. Alternativt kan du kvalificere dem med databasenavnet (f.eks. msdb.dbo.sp_add_job... osv.)

Følgende tabel giver et hurtigt overblik over hver procedure.

Lagret procedure Beskrivelse
sp_add_job Tilføjer et nyt job udført af SQL Agent-tjenesten.

Se Microsofts websted for at få flere oplysninger.
sp_add_jobstep Tilføjer et trin, der udfører den faktiske handling for jobbet, der blev tilføjet med sp_add_job .

I ovenstående eksempel tilføjer vi et trin til backup af en database. Vi specificerer at give en T-SQL-kommando.

@retry_interval er på minutter.

Se Microsofts websted for at få flere oplysninger.
sp_add_schedule Opretter en tidsplan, der kan bruges af et vilkårligt antal job.

I dette tilfælde gav vi @freq_type en værdi på 4 som er dagligt. Vi gav også @freq_interval en værdi på 4 , som også er dagligt.

Tiden er baseret på et 24-timers ur, og indtastes i formen HHMMSS. Vores eksempel bruger 041000 , hvilket er 04:10:00.

Se Microsoft-linket nedenfor for de forskellige tilgængelige muligheder, når du indstiller frekvensen.

Se Microsofts websted for at få flere oplysninger.
sp_attach_schedule Indstiller en tidsplan for et job. Her vedhæfter vi tidsplanen, som vi tilføjede med sp_add_schedule til jobbet, som vi tilføjede med sp_add_job .

Bemærk, at tidsplanen og jobbet skal have samme ejer.

Der kan også indstilles en tidsplan for mere end ét job, og et job kan køres på mere end én tidsplan.

Se Microsofts websted for at få flere oplysninger.
sp_add_jobserver Måler det angivne job på den angivne server. Dette accepterer også en @server_name argument for at angive serveren.

Standardværdien er (LOCAL) til den lokale maskine. I vores eksempel brugte vi den lokale maskine, så vi var i stand til at udelade dette argument.

Se Microsofts websted for at få flere oplysninger.

Se jobbet

Du kan bruge sp_help_job gemt procedure i msdb database for at se de SQL Server Agent-job, der er blevet oprettet på serveren.

EXEC sp_help_job;

Sådan ser det ud på min testmaskine:

I dette tilfælde er der tre job.

Du kan også se opgaverne i Objekt Explorer, når du har SQL Server Agent> Jobs node udvidet.

sp_help_job gemt procedure giver dig mulighed for at angive navnet eller ID på et job for at få mere detaljerede oplysninger om det pågældende job.

Eksempel:

EXEC sp_help_job @job_name= 'BackupPetHotelDB';

Resultat:

Resultaterne er opdelt i kernejobdetaljerne, jobtrinene, jobplanerne og jobmålserverne. Dette afspejler stort set de lagrede procedurer, som vi kørte, da vi oprettede jobbet.

Se Microsoft-dokumentationen for sp_help_job for mere information, samt en liste over andre argumenter, du kan give.

Test jobbet

Du kan bruge sp_start_job gemt procedure for at teste, at dit job vil køre. Denne procedure accepterer jobnavnet eller id'et, og det vil køre jobbet, så snart du udfører proceduren.

Se Sådan kører du et SQL Server-agentjob ved hjælp af T-SQL for et eksempel.


  1. SQL Server:Vedhæft forkert version 661

  2. Find længden af ​​den længste række i en kolonne i orakel

  3. Sådan forbinder du MySQL-database med PHP-websted

  4. Sådan konverteres antal minutter til tt:mm-format i TSQL?