Bijhouden wanneer triggers worden uitgevoerd
Een belangrijk aspect bij het monitoren van triggers is dat je een historie hebt van hun uitvoering. Zo kun je de timing van trigger-runs koppelen aan eventuele problemen die in de database optreden.
Als de tijden overeenkomen, is het mogelijk dat de problemen door de trigger zijn veroorzaakt.
SQL Server biedt informatie over de uitvoering van triggers die momenteel in het geheugen staan via de view sys.dm_exec_trigger_stats. Maar zodra een trigger uit het geheugen wordt verwijderd, verdwijnt alle informatie erover ook uit die view en raak je de uitvoeringsgeschiedenis kwijt.
Om deze beperking te omzeilen, besluit je de tabel TriggerAudit te gebruiken om informatie op te slaan over elke poging om rijen in de tabel Orders te wijzigen, omdat is gemeld dat die tabel vaak niet reageert.
Deze oefening maakt deel uit van de cursus
Triggers in SQL Server bouwen en optimaliseren
Oefeninstructies
- Wijzig de trigger
PreventOrdersUpdate. - Zorg dat de trigger afgaat wanneer rijen in de tabel
Ordersworden bijgewerkt. - Voeg extra details over de triggeruitvoering toe aan de tabel
TriggerAudit.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
-- 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);