始める無料で始める

トリガー実行の履歴を追跡する

トリガーを監視するうえで重要なのは、実行履歴を残しておくことです。これにより、トリガーが走ったタイミングと、データベースで発生した不具合の時刻をひも付けられます。

時刻が一致していれば、その問題はトリガーが原因で起きた可能性があります。

SQL Server には、現在メモリ上にあるトリガーの実行情報を提供する sys.dm_exec_trigger_stats ビューがあります。しかし、トリガーがメモリから外れると、その情報もビューから消えるため、実行履歴が失われてしまいます。

この制約を回避するために、応答しないことが多いと報告されている Orders テーブルに対する行の更新試行について、情報を TriggerAudit テーブルに保存することにしました。

この演習はコースの一部です

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);
コードを編集して実行