2013-05-17 20 views
0

모든 변경 사항을 테이블에 기록해야합니다. 필자는 데이터 감사 로깅에 대한 많은 기사를 읽었습니다. 모두는 나에게 복잡해 보입니다.간단한 SQL 데이터 감사 로그 테이블

전 업데이트 및 삭제 된 데이터 이전에 테이블 사본을 보관할 계획입니다. 이것은 좋은 생각입니까?

+0

아무도 당신이나 당신의 사용자/고객을 제외하고 "좋은 아이디어"가 무엇인지 말할 수 없습니다. 여기에 비즈니스 요구 사항은 무엇입니까? 합법적으로 통제되는 환경에서 모든 변경 사항에 대한 전체 감사 추적이 필요한 경우 더 많은 작업이 수행되는 경우에도 모든 테이블에 대해 감사를 설정해야 할 수 있습니다. 하지만 아마도 하나 또는 두 개의 특정 테이블 만 추적하면되므로 더 간단한 작업을 수행 할 수 있습니다. 질문을보다 정확하고 기술적으로 만들 수 있다면 더 나은 응답을 얻을 수 있습니다. – Pondlife

답변

1

우리가 하나의 테이블에 대해서 이야기하고 있다면 그렇습니다. 아마도 여러 테이블이 있다면 어쩌면. 테이블이 많으면 감사해야합니다.

이유는 더 복잡한 테이블을 유지해야 할 필요가 있다는 것입니다. 또한 많은 테이블에서보고하는 것이 어려운 작업이 될 수 있습니다. 저장

두 테이블 디자인 :

여기에 몇 가지 다른 아이디어입니다 아이디어가 하나 개의 테이블 (사용자, 호스트 시스템, 트랜잭션 시간, 테이블 이름, 데이터베이스 이름 등)과의 거래에 대한 세부 정보를 유지하는 것입니다 두 번째 테이블의 데이터 변경 (이전 값, 키 등)

타사 도구 : 다른 수준에서 감사를 제공 할 수있는 여러 가지 도구가 있습니다. ApexSQL Audit은 트리거 기반 감사 도구이며 ApexSQL Log이 고급이며 권한 및 스키마 변경을 감사 할 수 있으므로 Idera의 Compliance manager은 가장 진보 된 것이며 심지어 select 문을 캡처 할 수도 있습니다.

변경 데이터 캡처 : 이것은 SQL Server 2008 이상에 기본 제공되지만 엔터프라이즈 버전에만 있습니다.

+0

예. 그것은 하나의 테이블이 아닙니다. 나는 각 테이블의 감사 테이블에 변경된 데이터와 삭제 된 데이터 (전체 행)를 저장하기 위해 트리거를 사용할 계획이다. 모든 감사 테이블은 동일한 db에 있습니다. CDC를 사용하면 데이터 행의 두 버전간에 변경 사항 보고서를 표시하는 것이 얼마나 쉽습니까? 내 접근 방식에서는 전체 행을 사용할 수 있기 때문에 2 행의 데이터 행 사이에 차이점을 표시하는 것이 쉽습니다. – zak

+0

이 정보를 표시하는 시스템 기능이 내장되어 있기 때문에 매우 쉽습니다. CDC 스키마를 사용하여 감사 테이블을 쿼리하십시오.자세한 내용은 [this] (https://www.simple-talk.com/sql/learn-sql-server/introduction-to-change-data-capture- (cdc) -in-sql-server-2008 /)를 참조하십시오. 세부. – Dwoolk

+0

Renhold Software의 [SQL Table Audit] (https://renholdsoftware.com/SQLTableAudit)은 상대적으로 가격이 좋은 타사 대안 중 하나입니다. 그것은 트리거를 생성하여 작동합니다. – rpearsondev

0

데이터베이스에있는 모든 테이블에서 수행 된 변경 사항을 아는 경우 SQL Server 용 LepideAuditor를 사용해야합니다. 이 도구를 사용하면 데이터베이스 및 SQL Server 개체에서 수행 된 만들기, 변경, 삭제 작업과 관련된 변경 사항을 추적 할 수 있습니다. 이 개체에 대해 수행 된 모든 작업에 대해 누가, 무엇을, 언제, 어디서, 어디에서 정교하게 볼 수 있습니다.

0

테이블 복사본을 유지하려면 데이터베이스 스냅 샷을 참조하십시오. 데이터베이스의 읽기 전용 복사본을 만드는 데 도움이되며 스냅 샷으로 테이블을 쉽게 복원하고 비교할 수 있습니다.

SQL 감사 정보는 시작 부분에 작성하는 것이 다소 어렵지만 한 번 작업 한 후에는 두 번째 감사가 구현되는 데 몇 분이 걸립니다.

SQL 감사는 몇 가지 테이블에 적합한 선택입니다. 둘 이상인 경우 Lepide 또는 apexsql 트리거와 같은 타사 도구 또는 데이터 캡처 변경을 사용하십시오.