НачатьНачать бесплатно

Отслеживание выполнения триггеров

Важный аспект мониторинга триггеров — хранение истории их выполнения. Это позволяет сопоставить время срабатывания триггеров с возникающими в базе данных проблемами.

Если временны́е метки совпадают, вероятно, проблемы были вызваны именно триггером.

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);
Редактировать и запускать код