SQL Server Agent je služba Microsoft Windows, která provádí naplánované administrativní úlohy, které se nazývají úlohy na serveru SQL.
T-SQL obsahuje velkou sbírku uložených procedur, které se zabývají úlohami SQL Server Agent.
Zde některé z nich použijeme k vytvoření a naplánování úlohy SQL Server Agent.
Pokud chcete, můžete také vytvořit úlohy SQL Server Agent prostřednictvím GUI (v SSMS).
Povolit Agent XP
Pokud je to poprvé, co vytváříte úlohu SQL Server Agent na instanci SQL Serveru, budete pravděpodobně muset povolit rozšířené uložené procedury SQL Server Agent (Agent XP).
Zde je návod, jak to udělat pomocí T-SQL, a zde je návod, jak to udělat pomocí GUI SSMS.
Jakmile to uděláte, můžete pokračovat a vytvořit úlohu SQL Server Agent, jako je ta níže.
Příklad
Zde je příklad kódu použitého k vytvoření a naplánování úlohy SQL Server Agent.
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
Zde používáme pět uložených procedur k vytvoření a naplánování úlohy. Většina těchto postupů přijímá mnohem více (volitelných) argumentů, než jaké jsem použil v tomto příkladu. Úplný seznam argumentů dostupných pro každou proceduru naleznete na odkazech v tabulce níže.
Tyto uložené procedury jsou v msdb
databáze a můžete vidět, že jsme nastavili msdb jako aktuální databáze, než jsme je spustili. Případně je můžete kvalifikovat pomocí názvu databáze (např. msdb.dbo.sp_add_job...
, atd.)
Následující tabulka poskytuje rychlý přehled každého postupu.
Uložená procedura | Popis |
---|---|
sp_add_job | Přidá novou úlohu spuštěnou službou SQL Agent. Další informace naleznete na webu společnosti Microsoft. |
sp_add_jobstep | Přidá krok, který provede skutečnou operaci pro úlohu, která byla přidána pomocí sp_add_job . Ve výše uvedeném příkladu přidáme krok k zálohování databáze. Uvádíme, že poskytuje příkaz T-SQL. @retry_interval je v minutách. Další informace naleznete na webu společnosti Microsoft. |
sp_add_schedule | Vytváří plán, který lze použít pro libovolný počet úloh. V tomto případě jsme dali @freq_type hodnotu 4 což je denně. Také jsme dali @freq_interval hodnotu 4 , která je také denně. Čas je založen na 24hodinovém formátu a zadává se ve tvaru HHMMSS. Náš příklad používá 041000 , což je 04:10:00. Různé možnosti dostupné při nastavování frekvence naleznete na níže uvedeném odkazu společnosti Microsoft. Další informace naleznete na webu společnosti Microsoft. |
sp_attach_schedule | Nastaví plán pro úlohu. Zde přikládáme plán, který jsme přidali pomocí sp_add_schedule k úloze, kterou jsme přidali pomocí sp_add_job . Všimněte si, že plán a úloha musí mít stejného vlastníka. Plán lze také nastavit pro více než jednu úlohu a úlohu lze spustit na více než jednom plánu. Další informace naleznete na webu společnosti Microsoft. |
sp_add_jobserver | Zaciluje zadanou úlohu na zadaném serveru. To také přijímá @server_name argument pro specifikaci serveru. Výchozí hodnota je (LOCAL) pro místní stroj. V našem příkladu jsme použili místní stroj, a tak jsme mohli tento argument vynechat. Další informace naleznete na webu společnosti Microsoft. |
Zobrazit úlohu
Můžete použít sp_help_job
uložená procedura v msdb databáze pro zobrazení úloh SQL Server Agent, které byly vytvořeny na serveru.
EXEC sp_help_job;
Tady je to, jak to vypadá na mém testovacím počítači:
V tomto případě se jedná o tři práce.
Úlohy můžete také vidět v Průzkumníku objektů, když máte SQL Server Agent> Úlohy uzel rozbalen.
sp_help_job
uložená procedura vám umožňuje zadat název nebo ID úlohy, abyste získali podrobnější informace o této úloze.
Příklad:
EXEC sp_help_job @job_name= 'BackupPetHotelDB';
Výsledek:
Výsledky jsou rozděleny do hlavních podrobností úlohy, kroků úlohy, plánů úloh a cílových serverů úlohy. To do značné míry odráží uložené procedury, které jsme spustili při vytváření úlohy.
Viz dokumentaci společnosti Microsoft pro sp_help_job
pro více informací a také seznam dalších argumentů, které můžete poskytnout.
Otestujte úlohu
Můžete použít sp_start_job
uloženou proceduru, abyste otestovali, že vaše úloha poběží. Tato procedura přijímá název úlohy nebo ID a spustí úlohu, jakmile proceduru spustíte.
Příklad viz Jak spustit úlohu SQL Server Agent pomocí T-SQL.