변경 데이터 캡처 및 기타 SQL Server 기능

이 항목에서는 다음 기능으로 변경 데이터 캡처와 상호 작용하는 방법에 대해 설명합니다.

  • 변경 내용 추적

  • 데이터베이스 미러링

  • 트랜잭션 복제

  • 변경 데이터 캡처가 설정된 데이터베이스 복원 또는 연결

변경 내용 추적

동일한 데이터베이스에서 변경 데이터 캡처 및 변경 내용 추적을 설정할 수 있습니다. 특별한 고려 사항은 필요하지 않습니다. 자세한 내용은 변경 내용 추적 사용(SQL Server)을 참조하십시오.

데이터베이스 미러링

변경 데이터 캡처가 설정된 데이터베이스를 미러링할 수 있습니다. 장애 조치(Failover) 후 캡처 및 정리가 자동으로 발생하도록 하려면 다음 단계를 따릅니다.

  1. SQL Server 에이전트가 새 주 서버 인스턴스에서 실행 중인지 확인합니다.

  2. 새 주 데이터베이스(이전에는 미러 데이터베이스)에 대한 캡처 작업 및 정리 작업을 만듭니다. 작업을 만들려면 sp_cdc_add_job 저장 프로시저를 사용합니다.

정리 또는 캡처 작업의 현재 구성을 보려면 새 주 서버 인스턴스에서 sys.sp_cdc_help_jobs 저장 프로시저를 사용합니다. 지정된 데이터베이스에 대해 캡처 작업의 이름은 cdc.database_name_capture로 지정되고 정리 작업의 이름은 cdc.database_name_cleanup으로 지정됩니다. 여기서 database_name은 데이터베이스의 이름입니다.

작업의 구성을 변경하려면 sys.sp_cdc_change_job 저장 프로시저를 사용합니다.

데이터베이스 미러링에 대한 자세한 내용은 데이터베이스 미러링(SQL Server)을 참조하십시오.

트랜잭션 복제

변경 데이터 캡처 및 트랜잭션 복제는 동일한 데이터베이스에 함께 존재할 수 있지만 두 기능이 모두 설정된 경우 변경 테이블 채우기가 다르게 처리됩니다. 변경 데이터 캡처 및 트랜잭션 복제는 항상 동일한 sp_replcmds 프로시저를 사용하여 트랜잭션 로그에서 변경 내용을 읽습니다. 변경 데이터 캡처가 자체적으로 설정된 경우 SQL Server 에이전트 작업은 sp_replcmds를 호출합니다. 동일한 데이터베이스에 두 기능이 모두 설정된 경우 로그 판독기 에이전트는 sp_replcmds를 호출합니다. 이 에이전트는 변경 테이블과 배포 데이터베이스 테이블을 모두 채웁니다. 자세한 내용은 복제 로그 판독기 에이전트를 참조하십시오.

AdventureWorks2012 데이터베이스에 변경 데이터 캡처가 설정되어 있고 두 테이블에 캡처가 설정된 시나리오를 생각해 보십시오. 변경 테이블을 채우기 위해 캡처 작업은 sp_replcmds를 호출합니다. 데이터베이스에 트랜잭션 복제가 설정되고 게시가 만들어집니다. 그런 다음 데이터베이스에 로그 판독기 에이전트가 만들어지고 캡처 작업이 삭제됩니다. 로그 판독기 에이전트는 변경 테이블에 커밋된 마지막 로그 시퀀스 번호에서 로그를 계속 검색합니다. 이렇게 하면 변경 테이블의 데이터 일관성이 보장됩니다. 이 데이터베이스에서 트랜잭션 복제가 해제되면 로그 판독기 에이전트가 제거되고 캡처 작업이 다시 만들어집니다.

[!참고]

변경 데이터 캡처 및 트랜잭션 복제 모두에 로그 판독기 에이전트가 사용된 경우 복제된 변경 사항은 먼저 배포 데이터베이스에 기록됩니다. 그런 다음 캡처된 변경 사항이 변경 테이블에 기록됩니다. 두 작업은 함께 커밋됩니다. 배포 데이터베이스에 대한 쓰기 작업이 지연될 경우 변경 테이블에 변경 내용도 그만큼 늦게 표시됩니다.

변경 데이터 캡처를 사용하면 트랜잭션 복제의 proc exec 옵션을 사용할 수 없습니다.

변경 데이터 캡처가 설정된 데이터베이스 복원 또는 연결

SQL Server에서는 다음과 같은 논리에 따라 데이터베이스가 복원 또는 연결된 후 변경 데이터 캡처가 설정된 상태를 유지하는지 확인합니다.

  • 데이터베이스가 동일한 서버에 동일한 데이터베이스 이름으로 복원되는 경우 변경 데이터 캡처는 설정된 상태를 유지합니다.

  • 데이터베이스가 다른 서버로 복원되는 경우에는 기본적으로 변경 데이터 캡처가 해제되고 관련된 모든 메타데이터가 삭제됩니다.

    변경 데이터 캡처를 유지하려면 데이터베이스를 복원할 때 KEEP_CDC 옵션을 사용합니다. 이 옵션에 대한 자세한 내용은 RESTORE를 참조하십시오.

  • 데이터베이스가 분리된 후 다시 동일한 서버 또는 다른 서버에 연결될 경우 변경 데이터 캡처는 설정된 상태를 유지합니다.

  • 데이터베이스가 KEEP_CDC 옵션을 사용하여 Enterprise 이외의 다른 버전에 연결 또는 복원된 경우 변경 데이터 캡처에 SQL Server Enterprise가 필요하기 때문에 작업이 차단됩니다. 오류 메시지 934가 표시됩니다.

    SQL Server cannot load database '%.*ls' because change data capture is enabled. The currently installed edition of SQL Server does not support change data capture. Either disable change data capture in the database by using a supported edition of SQL Server, or upgrade the instance to one that supports change data capture.

sys.sp_cdc_disable_db를 사용하여 복원 또는 연결된 데이터베이스에서 변경 데이터 캡처를 제거할 수 있습니다.

참고 항목

개념

변경 데이터 캡처 관리 및 모니터링(SQL Server)