sql >> Database >  >> RDS >> Sqlserver

Een SQL Server Agent-taak maken met T-SQL

SQL Server Agent is een Microsoft Windows-service die geplande beheertaken uitvoert, die taken worden genoemd in SQL Server.

T-SQL bevat een grote verzameling opgeslagen procedures die betrekking hebben op SQL Server Agent-taken.

Hier zullen we er enkele gebruiken om een ​​SQL Server Agent-taak te maken en te plannen.

U kunt desgewenst ook SQL Server Agent-taken maken via de GUI (in SSMS).

Agent XP's inschakelen

Als dit de eerste keer is dat u een SQL Server Agent-taak maakt op uw SQL Server-instantie, moet u waarschijnlijk de uitgebreide opgeslagen procedures van SQL Server Agent (Agent XP's) inschakelen.

Hier leest u hoe u dit doet met T-SQL en hoe u dit doet met de SSMS GUI.

Als je dat eenmaal hebt gedaan, kun je doorgaan en een SQL Server Agent-taak maken zoals hieronder.

Voorbeeld

Hier is een voorbeeld van de code die wordt gebruikt om een ​​SQL Server Agent-taak te maken en te plannen.

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

Hier gebruiken we vijf opgeslagen procedures om de taak te maken en te plannen. De meeste van deze procedures accepteren veel meer (optionele) argumenten dan wat ik in dit voorbeeld heb gebruikt. Zie de links in de onderstaande tabel voor een volledige lijst met beschikbare argumenten voor elke procedure.

Deze opgeslagen procedures staan ​​in de msdb database, en je kunt zien dat we msdb . hebben ingesteld als de huidige database voordat we ze uitvoerden. U kunt ze ook kwalificeren met de databasenaam (bijv. msdb.dbo.sp_add_job... , enz.)

De volgende tabel geeft een snel overzicht van elke procedure.

Opgeslagen procedure Beschrijving
sp_add_job Voegt een nieuwe taak toe die wordt uitgevoerd door de SQL Agent-service.

Zie de Microsoft-website voor meer informatie.
sp_add_jobstep Voegt een stap toe die de eigenlijke bewerking uitvoert voor de taak die is toegevoegd met sp_add_job .

In het bovenstaande voorbeeld voegen we een stap toe om een ​​back-up van een database te maken. We specificeren dat het verstrekken van een T-SQL-opdracht.

De @retry_interval is in minuten.

Zie de Microsoft-website voor meer informatie.
sp_add_schedule Maakt een schema dat door een willekeurig aantal taken kan worden gebruikt.

In dit geval gaven we @freq_type een waarde van 4 die dagelijks is. We gaven ook @freq_interval een waarde van 4 , die ook dagelijks is.

De tijd is gebaseerd op een 24-uurs klok en wordt ingevoerd in de vorm HMMMSS. Ons voorbeeld gebruikt 041000 , dat is 04:10:00.

Zie de Microsoft-link hieronder voor de verschillende opties die beschikbaar zijn bij het instellen van de frequentie.

Zie de Microsoft-website voor meer informatie.
sp_attach_schedule Stelt een schema in voor een taak. Hier voegen we het schema bij dat we hebben toegevoegd met sp_add_schedule aan de taak die we hebben toegevoegd met sp_add_job .

Houd er rekening mee dat de planning en de taak dezelfde eigenaar moeten hebben.

Ook kan een schema voor meer dan één taak worden ingesteld en kan een taak volgens meer dan één schema worden uitgevoerd.

Zie de Microsoft-website voor meer informatie.
sp_add_jobserver Gericht op de opgegeven taak op de opgegeven server. Dit accepteert ook een @server_name argument om de server op te geven.

De standaardwaarde is (LOCAL) voor de lokale machine. In ons voorbeeld hebben we de lokale machine gebruikt en dus konden we dit argument weglaten.

Zie de Microsoft-website voor meer informatie.

Bekijk de vacature

U kunt de sp_help_job . gebruiken opgeslagen procedure in de msdb database om de SQL Server Agent-taken te bekijken die op de server zijn gemaakt.

EXEC sp_help_job;

Zo ziet het eruit op mijn testmachine:

In dit geval zijn er drie banen.

U kunt de taken ook in de Objectverkenner zien als u de SQL Server Agent> Taken hebt node uitgevouwen.

De sp_help_job Met de opgeslagen procedure kunt u de naam of ID van een taak opgeven om meer gedetailleerde informatie over die taak te krijgen.

Voorbeeld:

EXEC sp_help_job @job_name= 'BackupPetHotelDB';

Resultaat:

De resultaten zijn onderverdeeld in de kerntaakdetails, de taakstappen, de taakschema's en de taakdoelservers. Dit weerspiegelt min of meer de opgeslagen procedures die we hebben uitgevoerd toen we de taak maakten.

Zie de Microsoft-documentatie voor sp_help_job voor meer informatie, evenals een lijst met andere argumenten die u kunt geven.

Test de taak

U kunt de sp_start_job . gebruiken opgeslagen procedure om te testen of uw taak wordt uitgevoerd. Deze procedure accepteert de taaknaam of ID en zal de taak uitvoeren zodra u de procedure uitvoert.

Zie Hoe u een SQL Server Agent-taak uitvoert met T-SQL voor een voorbeeld.


  1. Automatisch een SQL Server-taak maken

  2. Rails, MySQL en Snow Leopard

  3. Inloggen mislukt voor gebruiker 'DOMAIN\MACHINENAME$'

  4. Oracle Fast Recovery Area