SQL Server Agent pro SQL Express + návod

SQL Server agent je nástroj integrovaný do SQL Serveru, jehož hlavním účelem je automatické plánování a spouštění úloh. Prostřednictvím SQL Agenta si můžeme založit tzv. Job a v rámci Jobu naplánovat jednotlivé úlohy – třeba spuštění skriptu, SSIS package, powershellu a mnoho dalšího. SQL Server agent je ale bohužel dostupný až od edice Standard a výše. Tím pádem jej v Edici SQL Server Express nenajdeme. Existuje ale alternativa.

V minulém článku o SQL Server Command utility jsem ukazoval, jak se dá přes příkazový řádek spustit SQL skript. Tuto znalost zde využijeme a v kombinaci s Windows Task schedulerem si ukážeme, jak je možné definovat libovolné množství po sobě následujících SQL úloh a tyto spuštění těchto úloh si naplánovat na určitý čas.

Task scheduler jako náhrada za SQL Server agent

Jak bylo zmíněno, tak jako náhradu za SQL Agenta využijeme nástroj integrovaný v operačním systému Windows, a to Task scheduler. Je to nástroj, který umožňuje vytvořit:

  • Tasky (Úlohy) – obdoba Jobu u SQL Server Agent
  • Actions (Akce) – obdoba Stepu u SQL Server Agent
  • Triggery (Časové plány) – obdoba Scheldules u SQL Server Agent

Princip je velice jednoduchý a ukážu jej na srovnání a později pro jistotu ještě na příkladu.

A) U SQL Server agenta vytváříme Joby a do každého jobu umístíme Stepy (úlohy) a spuštění jobu naplánujeme na určitý čas (viz. obrázky).

SQL Server Agent - Job   SQL Server Agent - Detail Jednoho Stepu (úlohy)

B) U Tasku přes Windows task scheduler je princip podobný jak můžete vidět na obrázku níže – stojíme nad detailem 1 Tasku jménem Test.

  • Na kartě Actions vidíme jednotlivé kroky, které mají být v rámci tasku spuštěny
  • Na kartě Triggers vidíme naplánovaný čas spuštění daného Tasku

Windows scheduler - Detail Tasku  Windows task scheduler - Trigger

Příklad – Jak nahradit SQL Server Agent

Zde ukážu jeden z možných postupů, jak to udělat. Dejme tomu, že potřebujeme připravit 2 úlohy. První úloha je podobná jako ta z minulého článku o sqlcmd a dále přidáme ještě jednu úlohu – to znamená že:

  1. Založíme tabulku „Biportal_Step_1“ a vložíme do ní 1 záznam „Hello World“
  2. Dále založíme tabulku „Biportal_Step_2“ a vložíme do ní záznamy „Hello World 1″,“Hello World 2″,“Hello World 3″,“Hello World 4″,“Hello World 5“

Když to shrnu, tak přes task scheduler spustíme 2 skripty:

  • sqlcmd -S SQL_INSTANCE -Q „USE [Temp];CREATE TABLE Biportal_Step_1 ([ID] INT IDENTITY(1,1) PRIMARY KEY, [Text] VARCHAR(255));INSERT INTO Biportal_Step_1 ([Text]) VALUES(‚Hello world‘);“
  • sqlcmd -S SQL_INSTANCE -Q „USE [Temp];CREATE TABLE Biportal_Step_1 ([ID] INT IDENTITY(1,1) PRIMARY KEY, [Text] VARCHAR(255));INSERT INTO [Temp].[dbo].[Biportal_Step_2] ([Text]) VALUES (‚Hello World 1‘),(‚Hello World 2‘),(‚Hello World 3‘),(‚Hello World 4‘),(‚Hello World 5‘);“

Postup jak to udělat:

1) Když chceme spustit nějakou úlohu přes task scheduler, tak nejlepším postupem je vytvořit si batch soubory (dávky). Je to jednoduché:

  • Založíme si Folder – nazvěme ho třeba „SQL Automation“
  • Otevřeme Notepad a nachystáme si dávky, každý .bat soubor reprezentuje 1 úlohu. V našem případě si tedy připravíme 2 soubory

Příprava batch souborů

2) Do každého ze souborů vložíme naše skripty v následujícím formátu (ukázka Step 1 – Create table Biporta_Step_1.bat):

Ukázka batch souboru

Vysvětlení batch souboru: Nejprve spustíme příkazový řádek (první start:), poté náš první skript (druhý start) a nakonec relaci ukončíme. Klikneme next

3) Poté co máme připraveny oba soubory, tak otevřeme Task scheduler a klikneme na „Create basic task“ a náš nový task nazveme „Biportal_SQL_Automation“

Create Task

4) O krok dále nastavujeme Trigger – tzn. frekvenci, s jakou chceme aby se task spouštěl. V našem případě máme jednorázový SQL úkol, kteoru budeme pouštět pouze jednou, ale většinou budete potřebovat pouštět úlohy opakovaně – např 1x denně. Zvolíme tedy Daily a klikneme next

Task scheduler - Daily Trigger

5) V dalším okně nastavujeme čas spuštění Tasku a klikneme next

Daily Trigger - nastavení času spuštění

6) V dalším okně nastavujeme akci, kterou má Task scheduler vykonat, v našem případě budeme chtít spustit program. Volíme tedy Start program a klikneme next.

Windows task scheduler- Action

7) V posledním kroku nastavujeme cestu na náš batch soubor (viz 1), který má být spuštěn a klikneme next.

Start program

8) Zobrazí se nám souhrnné okno a po jeho potvrzení máme vytvořen task. Zatím má task ale pouze 1 akci (step). Musíme ještě nastavit náš druhý step. proto poklikáme na náš task a otevřeme jej, Přejdeme na kartu „Actions“, klikneme na „New“, nastavíme cestu na druhy batch soubor a potvrdíme. Nyní bychom měli mít nastaven task, který obsahuje 2 akce. Tyto akce se pouští ve vámi zvolený čas (nastaveno v kroku 5).

Windows schedule Actions

9) Tak si zkusíme task pustit a uvidíme co se stane. Klikneme pravým tlačítkem na task a dáme „Run“. Zkontrolujeme jestli je vše v pořádku – vypadá to ok a my umíme nahradit SQL Agenta 😉

Výsledek příkladu windows task scheduler

 

 

 

_______________________________________________________________________________________________
Intelligent technologies - podniková řešení a školení
Stránkonoš.cz - webové stránky za rozumnou cenu
SQL Server Agent pro SQL Express + návod
Hodnocení

Napsat komentář

Vaše emailová adresa nebude zveřejněna.

This site uses Akismet to reduce spam. Learn how your comment data is processed.