Tenere traccia delle esecuzioni dei trigger
Un aspetto importante nel monitoraggio dei trigger è avere uno storico delle loro esecuzioni. Questo ti permette di collegare i tempi tra le esecuzioni del trigger e eventuali problemi che si verificano nel database.
Se i tempi coincidono, è possibile che i problemi siano stati causati dal trigger.
SQL Server fornisce informazioni sull'esecuzione di tutti i trigger attualmente in memoria tramite la vista sys.dm_exec_trigger_stats. Tuttavia, quando un trigger viene rimosso dalla memoria, tutte le informazioni a riguardo vengono eliminate anche dalla vista, quindi perdi lo storico delle esecuzioni.
Per superare questa limitazione, decidi di utilizzare la tabella TriggerAudit per archiviare le informazioni su qualsiasi tentativo di modifica delle righe nella tabella Orders, perché è stato segnalato che la tabella è spesso poco reattiva.
Questo esercizio fa parte del corso
Creare e ottimizzare i trigger in SQL Server
Istruzioni dell'esercizio
- Modifica il trigger
PreventOrdersUpdate. - Imposta il trigger in modo che si attivi quando vengono aggiornate righe nella tabella
Orders. - Aggiungi ulteriori dettagli sull'esecuzione del trigger nella tabella
TriggerAudit.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
-- 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);