开始使用免费开始使用

记录触发器的执行情况

在监控触发器时,一个重要因素是保留其执行历史。这能让您把触发器运行的时间点与数据库中出现的问题对应起来。

如果时间吻合,就有可能是该触发器导致了问题。

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);
编辑并运行代码