SQL Server 변경 데이터 캡처는 SQL Server 트랜잭션 로그에서 기록 데이터를 읽고 특수 테이블에 저장하는 기능입니다.
TVF (특수 테이블 값 함수)를 사용하면 사용자가이 데이터를 쿼리 할 수 있으므로 특정 테이블의 모든 변경 사항을 가져 오거나 특정 시간 내에 변경으로 인해 발생한 순 변경 사항 만 가져올 수 있습니다.
CDC에는 특정 장점이 있습니다
- 특정 테이블이나 열만 추적하도록 구성 할 수 있습니다.
- 모델 변경을 어느 정도 처리 할 수 있습니다.
- 트랜잭션 로그와 작동하므로 트리거만큼 성능에 영향을 미치지 않습니다.
- 쉽게 활성화 / 비활성화되며 추적해야 할 테이블에 추가 열이 필요하지 않습니다.
또한 몇 가지 단점이 있습니다.
- 히스토리 데이터의 양이 엄청나게 빨라질 수 있습니다.
- 변경 한 사람을 추적 할 수 없습니다 (적어도 삭제하지 않음).
- 히스토리 데이터는 트랜잭션 로그를 기반으로하기 때문에 시간이 걸립니다.
- SQL Server 에이전트에 따라 다릅니다. 에이전트가 실행 중이 아니거나 충돌하면 기록이 추적되지 않습니다.
나는 CDC에 대해 꽤 많이 읽었으며 지금 그것을 사용하는 방법을 알고 있지만 그것이 그것이 나에게 적합한 도구인지 확실하지 않습니다.
- CDC가 어떤 작업 / 시나리오에 적합한 도구입니까? (예 : 사용자가 특정 시점으로 데이터 오브젝트를 복원하도록 허용? 감사? 전체 데이터 히스토리 표시?)
- 언제 CDC를 사용하지 말고 맞춤형 트리거 기반 솔루션을 사용해야합니까?
- 운영 데이터베이스에서 CDC를 사용하고 운영 응용 프로그램 내에서 CDC 데이터를 사용해도됩니까? (예 : 최종 사용자에게 표시) 아니면이 기능을 잘못 사용 했습니까?
CDC가 감사 도구라고 들었지만 SQL Server Audit의 용도는 아닙니다 . 그들은 같은 작업을 위해 서로 다른 도구입니까? 아니면 다른 것들에 CDC를 사용할 수 있습니까?
현재 시나리오는 여러 미래의 응용 프로그램의 기초가 될 신뢰할 수있는 데이터 프레임 워크를 작성하라는 요청입니다. 정확한 요구 사항은 모호하지만 데이터 히스토리를 추적하고 다른 테이블의 모든 관련 데이터와 함께 이전 항목을 복원 할 수 있어야합니다. 현재 CDC를 옵션으로 평가하고 있지만 권장되는 사용 사례를 찾을 수 없기 때문에 이것이 올바른 방법인지 확실하지 않습니다.
특정 시나리오에 대한 조언을 고맙게 생각하지만 Change Data Capture를 언제 또는 사용하지 않을 것인지에 대한 일반적인 조언을 제공해야합니다.