변경 데이터 캡처 및 기타 SQL Server 기능Change Data Capture and Other SQL Server Features

이 항목에서는 다음 기능으로 변경 데이터 캡처와 상호 작용하는 방법에 대해 설명합니다.This topic describes how the following features interact with change data capture:

Change Tracking Change Tracking

동일한 데이터베이스에서 변경 데이터 캡처 및 변경 내용 추적 을 설정할 수 있습니다.Change data capture and change tracking can be enabled on the same database. 특별한 고려 사항은 필요하지 않습니다.No special considerations are required. 자세한 내용은 변경 내용 추적 사용(SQL Server)을 참조하세요.For more information, see Work with Change Tracking (SQL Server).

데이터베이스 미러링 Database Mirroring

변경 데이터 캡처가 설정된 데이터베이스를 미러링할 수 있습니다.A database that is enabled for change data capture can be mirrored. 장애 조치(Failover) 후 캡처 및 정리가 자동으로 발생하도록 하려면 다음 단계를 따릅니다.To ensure that capture and cleanup happen automatically after a failover, follow these steps:

  1. SQL ServerSQL Server 에이전트가 새 주 서버 인스턴스에서 실행 중인지 확인합니다.Ensure that SQL ServerSQL Server Agent is running on the new principal server instance.

  2. 새 주 데이터베이스(이전에는 미러 데이터베이스)에 대한 캡처 작업 및 정리 작업을 만듭니다.Create the capture job and cleanup job on the new principal database (the former mirror database). 작업을 만들려면 sp_cdc_add_job 저장 프로시저를 사용합니다.To create the jobs, use the sp_cdc_add_job stored procedure.

    정리 또는 캡처 작업의 현재 구성을 보려면 새 주 서버 인스턴스에서 sys.sp_cdc_help_jobs 저장 프로시저를 사용합니다.To view the current configuration of a cleanup or capture job, use the sys.sp_cdc_help_jobs stored procedure on the new principal server instance. 지정된 데이터베이스에 대해 캡처 작업의 이름은 cdc.database_name_capture로 지정되고 정리 작업의 이름은 cdc.database_name_cleanup으로 지정됩니다. 여기서 database_name 은 데이터베이스의 이름입니다.For a given database, the capture job is named cdc.database_name_capture, and the cleanup job is named cdc.database_name_cleanup, where database_name is the name of the database.

    작업의 구성을 변경하려면 sys.sp_cdc_change_job 저장 프로시저를 사용합니다.To change the configuration of a job, use the sys.sp_cdc_change_job stored procedure.

    데이터베이스 미러링에 대한 자세한 내용은 데이터베이스 미러링(SQL Server)을 참조하세요.For information about database mirroring, see Database Mirroring (SQL Server).

Transactional Replication Transactional Replication

변경 데이터 캡처 및 트랜잭션 복제는 동일한 데이터베이스에 함께 존재할 수 있지만 두 기능이 모두 설정된 경우 변경 테이블 채우기가 다르게 처리됩니다.Change data capture and transactional replication can coexist in the same database, but population of the change tables is handled differently when both features are enabled. 변경 데이터 캡처 및 트랜잭션 복제는 항상 동일한 sp_replcmds프로시저를 사용하여 트랜잭션 로그에서 변경 내용을 읽습니다.Change data capture and transactional replication always use the same procedure, sp_replcmds, to read changes from the transaction log. 변경 데이터 캡처가 자체적으로 설정된 경우 SQL ServerSQL Server 에이전트 작업은 sp_replcmds를 호출합니다.When change data capture is enabled on its own, a SQL ServerSQL Server Agent job calls sp_replcmds. 동일한 데이터베이스에 두 기능이 모두 설정된 경우 로그 판독기 에이전트는 sp_replcmds를 호출합니다.When both features are enabled on the same database, the Log Reader Agent calls sp_replcmds. 이 에이전트는 변경 테이블과 배포 데이터베이스 테이블을 모두 채웁니다.This agent populates both the change tables and the distribution database tables. 자세한 내용은 Replication Log Reader Agent을 참조하세요.For more information, see Replication Log Reader Agent.

AdventureWorks2012AdventureWorks2012 데이터베이스에 변경 데이터 캡처가 설정되어 있고 두 테이블에 캡처가 설정된 시나리오를 생각해 보십시오.Consider a scenario in which change data capture is enabled on the AdventureWorks2012AdventureWorks2012 database, and two tables are enabled for capture. 변경 테이블을 채우기 위해 캡처 작업은 sp_replcmds를 호출합니다.To populate the change tables, the capture job calls sp_replcmds. 데이터베이스에 트랜잭션 복제가 설정되고 게시가 만들어집니다.The database is enabled for transactional replication, and a publication is created. 그런 다음 데이터베이스에 로그 판독기 에이전트가 만들어지고 캡처 작업이 삭제됩니다.Now, the Log Reader Agent is created for the database and the capture job is deleted. 로그 판독기 에이전트는 변경 테이블에 커밋된 마지막 로그 시퀀스 번호에서 로그를 계속 검색합니다.The Log Reader Agent continues to scan the log from the last log sequence number that was committed to the change table. 이렇게 하면 변경 테이블의 데이터 일관성이 보장됩니다.This ensures data consistency in the change tables. 이 데이터베이스에서 트랜잭션 복제가 해제되면 로그 판독기 에이전트가 제거되고 캡처 작업이 다시 만들어집니다.If transactional replication is disabled in this database, the Log Reader Agent is removed and the capture job is re-created.

참고

변경 데이터 캡처 및 트랜잭션 복제 모두에 로그 판독기 에이전트가 사용된 경우 복제된 변경 사항은 먼저 배포 데이터베이스에 기록됩니다.When the Log Reader Agent is used for both change data capture and transactional replication, replicated changes are first written to the distribution database. 그런 다음 캡처된 변경 사항이 변경 테이블에 기록됩니다.Then, captured changes are written to the change tables. 두 작업은 함께 커밋됩니다.Both operations are committed together. 배포 데이터베이스에 대한 쓰기 작업이 지연될 경우 변경 테이블에 변경 내용도 그만큼 늦게 표시됩니다.If there is any latency in writing to the distribution database, there will be a corresponding latency before changes appear in the change tables.

변경 데이터 캡처를 사용하면 트랜잭션 복제의 proc exec 옵션을 사용할 수 없습니다.The proc exec option of transactional replication is not available when change data capture is enabled.

변경 데이터 캡처가 설정된 데이터베이스 복원 또는 연결 Restoring or Attaching a Database Enabled for Change Data Capture

SQL ServerSQL Server 에서는 다음과 같은 논리에 따라 데이터베이스가 복원 또는 연결된 후 변경 데이터 캡처가 설정된 상태를 유지하는지 확인합니다. uses the following logic to determine if change data capture remains enabled after a database is restored or attached:

  • 데이터베이스가 동일한 서버에 동일한 데이터베이스 이름으로 복원되는 경우 변경 데이터 캡처는 설정된 상태를 유지합니다.If a database is restored to the same server with the same database name, change data capture remains enabled.

  • 데이터베이스가 다른 서버로 복원되는 경우에는 기본적으로 변경 데이터 캡처가 해제되고 관련된 모든 메타데이터가 삭제됩니다.If a database is restored to another server, by default change data capture is disabled and all related metadata is deleted.

    변경 데이터 캡처를 유지하려면 데이터베이스를 복원할 때 KEEP_CDC 옵션을 사용합니다.To retain change data capture, use the KEEP_CDC option when restoring the database. 이 옵션에 대한 자세한 내용은 RESTORE를 참조하세요.For more information about this option, see RESTORE.

  • 데이터베이스가 분리된 후 다시 동일한 서버 또는 다른 서버에 연결될 경우 변경 데이터 캡처는 설정된 상태를 유지합니다.If a database is detached and attached to the same server or another server, change data capture remains enabled.

  • 데이터베이스가 KEEP_CDC 옵션을 사용하여 Enterprise 이외의 다른 버전에 연결 또는 복원된 경우 변경 데이터 캡처에 SQL ServerSQL Server Enterprise가 필요하기 때문에 작업이 차단됩니다.If a database is attached or restored with the KEEP_CDC option to any edition other than Enterprise, the operation is blocked because change data capture requires SQL ServerSQL Server Enterprise. 오류 메시지 934가 표시됩니다.Error message 934 is displayed:

    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 restore database without KEEP_CDC option, or upgrade the instance to one that supports Change Data Capture.

    sys.sp_cdc_disable_db 를 사용하여 복원 또는 연결된 데이터베이스에서 변경 데이터 캡처를 제거할 수 있습니다.You can use sys.sp_cdc_disable_db to remove change data capture from a restored or attached database.

변경 데이터 캡처 및 Always OnChange Data Capture and Always On

Always On을 사용할 때는 보조 복제에서 변경 내용 열거를 수행하여 주 복제에서 디스크 부하를 줄여야 합니다.When you use Always On, change enumeration should be done on the Secondary replication to reduce the disk load on the primary.

참고 항목See Also

변경 데이터 캡처 관리 및 모니터링(SQL Server)Administer and Monitor Change Data Capture (SQL Server)