시작하기무료로 시작하기

트리거 실행 추적하기

트리거를 모니터링할 때 중요한 요소 중 하나는 실행 이력을 확보하는 것입니다. 이렇게 하면 트리거가 실행된 시점과 데이터베이스에서 발생한 문제의 시점을 연결해 볼 수 있어요.

시간대가 일치한다면, 해당 문제는 트리거 때문에 발생했을 가능성이 있습니다.

SQL Server는 현재 메모리에 저장된 트리거의 실행 정보를 sys.dm_exec_trigger_stats 뷰에서 제공합니다. 하지만 트리거가 메모리에서 제거되면 해당 정보도 뷰에서 사라지므로, 트리거 실행 이력을 잃게 됩니다.

이 한계를 극복하기 위해, 사람들이 Orders 테이블이 자주 응답하지 않는다고 보고한 점을 고려하여, 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);
코드 편집 및 실행