>데이터 베이스 >MySQL 튜토리얼 >SQL Server의 특정 테이블에 영향을 미치는 SQL 문을 어떻게 기록할 수 있습니까?

SQL Server의 특정 테이블에 영향을 미치는 SQL 문을 어떻게 기록할 수 있습니까?

DDD
DDD원래의
2025-01-03 01:00:39199검색

How Can I Log the SQL Statements Affecting a Specific Table in SQL Server?

SQL Server에서 영향을 받는 SQL을 기록하는 트리거 생성

SQL Server 2008에서는 테이블을 수정하는 SQL을 캡처하는 트리거를 생성할 수 있습니다. 감사 목적으로 기록합니다.

트리거 정의:

CREATE TRIGGER [dbo].[triggerAfterUpdate] 
   ON  [dbo].[TableWithMysteryUpdate] 
   AFTER UPDATE
AS 
BEGIN
    SET NOCOUNT ON;

    INSERT INTO [dbo].[LogTable] (
        ModifiedDate,
        ModifyingSQL
    )
    VALUES (
        GETDATE(),
        EVENTDATA()
    );
END

로그 테이블 정의:

CREATE TABLE [dbo].[LogTable] (
    [LogID] [INT] NOT NULL IDENTITY(1, 1),
    [ModifiedDate] [DATETIME] NOT NULL,
    [ModifyingSQL] [NVARCHAR](MAX) NOT NULL
);

사용 예:

생성 후 트리거를 실행하면 [dbo].[TableWithMysteryUpdate] 테이블에 대한 모든 업데이트가 [dbo].[LogTable].

추가 참고 사항:

  • EVENTDATA() 함수는 이벤트를 트리거한 실행된 SQL 문을 캡처합니다.
  • GETDATE() 함수는 업데이트 날짜와 시간을 기록합니다.
  • 사용자 정의할 수 있습니다. 업데이트를 수행한 사용자나 영향을 받은 행과 같은 추가 정보를 로그 테이블에 포함합니다.
  • 이 접근 방식은 광범위한 데이터베이스 지식이 없어도 특정 테이블을 수정하는 SQL에 대한 가시성을 제공합니다.

위 내용은 SQL Server의 특정 테이블에 영향을 미치는 SQL 문을 어떻게 기록할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.