경우에 따라 테이블을 업데이트 한 정확한 진술을 찾고 싶을 수 있습니다. 또는 DELETE
문 (실행 한 사람)의 WHERE
절이 어떻게 생겼는지 확인할 수 있습니다.
DBCC INPUTBUFFER
은 이러한 종류의 정보를 제공 할 수 있습니다. DBCC INPUTBUFFER
명령을 사용하여 트리거를 시작한 정확한 명령을 찾는 트리거를 테이블에 만들 수 있습니다.
다음과 같은 트리거 코드는 SQL Sever 2000에서 작동합니다 (SQL Server 7.0에서는 트리거 내에 테이블을 만들 수 없으므로 수동으로 테이블을 만들어 트리거 내부에서 사용해야합니다). 이 코드는 SQL 문, 로그인 이름, 사용자 이름 및 현재 시간 만 표시하지만이 정보가 추적/감사 목적으로 테이블에 기록되도록 코드를 변경할 수 있습니다.
CREATE TRIGGER TriggerName
ON TableName
FOR INSERT, UPDATE, DELETE AS
BEGIN
SET NOCOUNT ON
DECLARE @ExecStr varchar(50), @Qry nvarchar(255)
CREATE TABLE #inputbuffer
(
EventType nvarchar(30),
Parameters int,
EventInfo nvarchar(255)
)
SET @ExecStr = 'DBCC INPUTBUFFER(' + STR(@@SPID) + ')'
INSERT INTO #inputbuffer
EXEC (@ExecStr)
SET @Qry = (SELECT EventInfo FROM #inputbuffer)
SELECT @Qry AS 'Query that fired the trigger',
SYSTEM_USER as LoginName,
USER AS UserName,
CURRENT_TIMESTAMP AS CurrentTime
END
위의 코드에서, 각각 테이블의 이름과 트리거 이름으로 TableName
및 TriggerName
를 교체하고 당신은 삽입/업데이트/삭제 데이터에 의해 처음으로 다음 트리거를 작성하여 트리거를 테스트 할 수 있습니다.
이
here!
'DROP TRIGGER'에서 촬영,'PROCEDURE'을 만듭니다. –
'DBCC INPUTBUFFER'를 검색하십시오. – Arvo
'WHERE'이 아니라'WHERE' ... –