sql >> Databasteknik >  >> RDS >> Sqlserver

Skapa ett SQL Server Agent Job med T-SQL

SQL Server Agent är en Microsoft Windows-tjänst som kör schemalagda administrativa uppgifter, som kallas jobb i SQL Server.

T-SQL innehåller en stor samling lagrade procedurer som hanterar SQL Server Agent-jobb.

Här kommer vi att använda några av dem för att skapa och schemalägga ett SQL Server Agent-jobb.

Du kan också skapa SQL Server Agent-jobb via GUI (i SSMS) om du föredrar det.

Aktivera Agent XPs

Om det här är första gången du skapar ett SQL Server Agent-jobb på din SQL Server-instans, måste du förmodligen aktivera SQL Server Agents utökade lagrade procedurer (Agent XPs).

Så här gör du det med T-SQL, och så här gör du med SSMS-gränssnittet.

När du har gjort det kan du fortsätta och skapa ett SQL Server Agent-jobb som det nedan.

Exempel

Här är ett exempel på koden som används för att skapa och schemalägga ett SQL Server Agent-jobb.

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

Här använder vi fem lagrade procedurer för att skapa och schemalägga jobbet. De flesta av dessa procedurer accepterar mycket fler (valfria) argument än vad jag har använt i det här exemplet. För en fullständig lista över tillgängliga argument för varje procedur, se länkarna i tabellen nedan.

Dessa lagrade procedurer finns i msdb databas, och du kan se att vi ställer in msdb som den aktuella databasen innan vi körde dem. Alternativt kan du kvalificera dem med databasnamnet (t.ex. msdb.dbo.sp_add_job... osv.)

Följande tabell ger en snabb översikt över varje procedur.

Lagrad procedur Beskrivning
sp_add_job Lägger till ett nytt jobb som körs av SQL Agent-tjänsten.

Se Microsofts webbplats för mer information.
sp_add_jobstep Lägger till ett steg som utför den faktiska operationen för jobbet som lades till med sp_add_job .

I exemplet ovan lägger vi till ett steg för att säkerhetskopiera en databas. Vi specificerar att tillhandahålla ett T-SQL-kommando.

@retry_interval är på minuter.

Se Microsofts webbplats för mer information.
sp_add_schedule Skapar ett schema som kan användas av valfritt antal jobb.

I det här fallet gav vi @freq_type ett värde på 4 som är dagligen. Vi gav också @freq_interval ett värde på 4 , som också är dagligen.

Tiden är baserad på en 24-timmars klocka och anges i formen HHMMSS. Vårt exempel använder 041000 , vilket är 04:10:00.

Se Microsoft-länken nedan för de olika tillgängliga alternativen när du ställer in frekvensen.

Se Microsofts webbplats för mer information.
sp_attach_schedule Ställer in ett schema för ett jobb. Här bifogar vi schemat som vi lade till med sp_add_schedule till jobbet som vi lade till med sp_add_job .

Observera att schemat och jobbet måste ha samma ägare.

Dessutom kan ett schema ställas in för mer än ett jobb, och ett jobb kan köras på mer än ett schema.

Se Microsofts webbplats för mer information.
sp_add_jobserver Riktar det angivna jobbet på den angivna servern. Detta accepterar också en @server_name argument för att ange servern.

Standardvärdet är (LOCAL) för den lokala maskinen. I vårt exempel använde vi den lokala maskinen och så kunde vi utelämna detta argument.

Se Microsofts webbplats för mer information.

Visa jobbet

Du kan använda sp_help_job lagrad procedur i msdb databas för att visa SQL Server Agent-jobb som har skapats på servern.

EXEC sp_help_job;

Så här ser det ut på min testmaskin:

I det här fallet finns det tre jobb.

Du kan också se jobben i Objektutforskaren när du har SQL Server Agent> Jobb noden expanderad.

sp_help_job lagrad procedur låter dig ange namn eller ID för ett jobb för att få mer detaljerad information om jobbet.

Exempel:

EXEC sp_help_job @job_name= 'BackupPetHotelDB';

Resultat:

Resultaten är uppdelade i kärnjobbdetaljerna, jobbstegen, jobbscheman och jobbmålservrarna. Detta återspeglar i stort sett de lagrade procedurerna som vi körde när vi skapade jobbet.

Se Microsofts dokumentation för sp_help_job för mer information, samt en lista över andra argument som du kan tillhandahålla.

Testa jobbet

Du kan använda sp_start_job lagrad procedur för att testa att ditt jobb kommer att köras. Den här proceduren accepterar jobbets namn eller ID och det körs jobbet så snart du utför proceduren.

Se Hur man kör ett SQL Server Agent Job med T-SQL för ett exempel.


  1. Problem med innehållstyper när du laddar en fixtur i Django

  2. PostgreSQL:Ge alla behörigheter till en användare på en PostgreSQL-databas

  3. Introduktion till PL/SQL-paket i Oracle Database

  4. Kan jag kopiera :OLD och :NEW pseudo-poster i/till en Oracle-lagrad procedur?