Sledování spuštění triggerů
Při monitorování triggerů je důležité mít k dispozici historii jejich spuštění. Díky tomu můžeš porovnat, kdy se triggery spustily, a zjistit, zda to nesouvisí s problémy, které se v databázi vyskytly.
Pokud se časy shodují, je možné, že problémy způsobil právě daný trigger.
SQL Server poskytuje informace o spuštění triggerů, které jsou aktuálně uloženy v paměti, prostřednictvím pohledu sys.dm_exec_trigger_stats. Jakmile je ale trigger z paměti odstraněn, všechny informace o něm z tohoto pohledu zmizí – a ty tak přijdeš o historii jeho spuštění.
Aby ses tomuto omezení vyhnul/a, rozhodneš se využít tabulku TriggerAudit k ukládání informací o všech pokusech o úpravu řádků v tabulce Orders. Uživatelé totiž hlásí, že tato tabulka bývá často nedostupná.
Toto cvičení je součástí kurzu
Tvorba a optimalizace triggerů v SQL Serveru
Pokyny k cvičení
- Uprav trigger
PreventOrdersUpdate. - Nastav, aby se trigger spouštěl při aktualizaci řádků v tabulce
Orders. - Doplň do tabulky
TriggerAuditdalší podrobnosti o spuštění triggeru.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
-- Modify the trigger to add new functionality
___ TRIGGER PreventOrdersUpdate
ON ___
-- Prevent any row changes
INSTEAD OF ___
AS
-- Keep history of trigger executions
INSERT INTO ___ (TriggerName, ExecutionDate)
SELECT 'PreventOrdersUpdate',
GETDATE();
RAISERROR ('Updates on "Orders" table are not permitted.
Place a new order to add new products.', 16, 1);