Отслеживание выполнения триггеров
Важный аспект мониторинга триггеров — хранение истории их выполнения. Это позволяет сопоставить время срабатывания триггеров с возникающими в базе данных проблемами.
Если временны́е метки совпадают, вероятно, проблемы были вызваны именно триггером.
SQL Server предоставляет информацию о выполнении триггеров, которые в данный момент находятся в памяти, через представление sys.dm_exec_trigger_stats. Однако как только триггер выгружается из памяти, все сведения о нём исчезают из этого представления — и история выполнения теряется.
Чтобы обойти это ограничение, вы решаете использовать таблицу TriggerAudit для сохранения информации о каждой попытке изменить строки в таблице Orders, поскольку пользователи сообщают, что таблица нередко перестаёт отвечать на запросы.
Это упражнение является частью курса
Создание и оптимизация триггеров в SQL Server
Инструкции к упражнению
- Измените триггер
PreventOrdersUpdate. - Настройте триггер так, чтобы он срабатывал при обновлении строк в таблице
Orders. - Добавьте дополнительные сведения о выполнении триггера в таблицу
TriggerAudit.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
-- 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);