2011-03-03 4 views
1

이 응용 프로그램에 대해 특별히 설정된 로그인 자격 증명을 사용하여 SQL Server 2008 R2 데이터베이스에 연결하는 (asp.net) 응용 프로그램이 있습니다.SQL Server에서 감사 로그를 구현하는 방법

우리 프로그램은 저장 프로 시저를 통해 레코드를 액세스/수정/삭제합니다.이 레코드에는 작업을 수행하는 사용자의 사용자 이름을 매개 변수로 전달합니다.

특정 테이블의 모든 업데이트 및 삭제에 대한 감사 로그를 유지할 수 있어야합니다. 솔루션은 가능한 한 최소화해야하며 개발자 개입이 필요하지 않습니다.

내가 찾을 수있는 가장 쉬운 방법은 '이전'데이터를 기록 테이블 (A_History)에 복사하는 테이블 (A)에 트리거를 넣는 것입니다. 문제는 우리가 누가 수행했는지 알 수 있어야한다는 것입니다. 이 동작은 업데이트를 위해 새로 삽입 된 레코드의 사용자 이름을 살펴 보는 것만 큼 쉽습니다. 그러나 삭제를 위해 우리는 저장 프로 시저에 전송 된 username 매개 변수에 액세스 할 수 없습니다.

CONTEXT_INFO()와 같은 것을 사용하지 않고 이것을 구현하는 방법은 저장 프로 시저와 모든 호출에 추가해야하므로 잊어 버릴 수 있습니다.

답변

4

SQL Change Tracking이 도움이 될 수 있습니다.

지금, 당신은 몇 가지 다른 일을 아마을 수행해야합니다

  1. 피가 물리적으로 레코드를 삭제.
  2. 활성/삭제 된 열 추가.
  3. 테이블에 ModifiedByUserID 및 CreatedByUserID 열이 있는지 확인하십시오.
  4. 업데이트 할 때 또는 그 외로 삭제되었음을 표시하려면 ModifiedByUserID 열을 호출자의 사용자 ID로 업데이트하십시오.

SQL을 모두 구현하면 SQL이 해당 레코드의 모든 버전을 추적합니다 ... 만든 사람 ... 만든 사람 ... 누가 삭제 한 것으로 표시했는지.

+2

기타 알아 두어야 할 것은 표준보다 엔터프라이즈 에디션이 필요하다는 것입니다.이 제품은 가격이 비싸지 만 (이 기능을 구현하는 데 개발자 지출에 소요되는 비용보다 저렴하고 안정적 ​​일 수는 있지만) –

관련 문제