다음을 통해 공유


시스템 CLR 데이터 형식(geometry, geography 또는 hierarchyid)을 사용하여 테이블에 대한 변경 내용을 처리할 때 CDC 캡처 작업이 실패합니다.

이 문서는 시스템 CLR 데이터 형식(geometry, geography 또는 hierarchyid)이 있는 테이블에 대한 변경 내용을 처리할 때 CDC 캡처 작업이 실패하는 문제를 해결하는 데 도움이 됩니다.

적용 대상: SQL Server
원래 KB 번호: 4538384

증상

다음과 같은 경우를 생각해볼 수 있습니다.

  • 기하 도형, 지리 또는 hierarchyid와 같은 시스템 CLR 데이터 형식이 있는 테이블에서 CDC(변경 데이터 캡처) 기능을 사용하도록 설정합니다.
  • CDC 캡처(검사) 작업은 다른 테이블과 관련된 변경 내용을 처리하고 있습니다. 프로세스는 아직 시스템 CLR 데이터 형식이 있는 테이블에 도달하지 않았습니다.
  • 시스템 CLR 데이터 형식이 있는 테이블에서 DML(데이터 조작 언어)을 변경합니다. 그런 다음 동일한 테이블에서 DDL(데이터 정의 언어)을 변경합니다(예: 열을 추가).

이 시나리오에서는 CDC 캡처 작업이 시스템 CLR 데이터 형식이 있는 테이블 처리를 시작하면 실패하고 다음 오류 메시지를 반환합니다.

Msg 18805, Level 16, State 1, Procedure sp_replcmds, LineLineNumber[Batch Start Line LineNumber ]
Log-Scan 프로세스에서 LSN(로그 시퀀스 번호) {nnnnn: nn: nn}에서 복제된 명령을 생성하지 못했습니다. 게시 데이터베이스를 백업하고 고객 지원 서비스에 문의하세요.
Msg 22859, Level 16, State 2, Procedure sp_replcmds, Line LineNumber [Batch Start Line LineNumber ]
로그 레코드를 처리하는 데 로그 검사 프로세스가 실패했습니다. 원인을 식별하고 관련된 문제를 해결하려면 현재 세션의 이전 오류를 참조하세요.
Msg 3621, Level 16, State 6, Procedure sp_replcmds, Line LineNumber [Batch Start Line LineNumber ]
문이 종료되었습니다.
Msg 22864, Level 16, State 1, Procedure sp_MScdc_capture_job, Line LineNumber[Batch Start Line LineNumber ]
데이터베이스 'DatabaseName'에 대한 캡처 작업에서 sp_MScdc_capture_job 호출하지 못했습니다. 오류의 원인에 대한 이전 오류를 확인합니다.

또한 다음 항목이 오류 로그에 기록될 수 있습니다.

오류: 913, 심각도: 16, 상태: 16. 데이터베이스 IDID를 찾을 수 없습니다. 데이터베이스가 아직 활성화되지 않았거나 전환 중일 수 있습니다. 데이터베이스를 사용할 수 있게 되면 쿼리를 다시 가져옵니다. 이 오류가 해당 상태를 전환하는 데이터베이스 때문이라고 생각하지 않는 경우 이 오류가 계속 발생합니다.

추가 정보

CDC 캡처 작업이 처음에 DML만 처리한 다음 다음 실행 시 DDL 변경 사항을 처리하는 경우에는 이 문제가 발생하지 않습니다.

해결 방법

이 문제를 해결하려면 다음 방법 중 하나를 시도해 보세요.

  • 문제가 있는 데이터 형식(geometry, geography, hierarchyid)을 CDC와 함께 사용하지 마세요.

  • 기하 도형, 지리 또는 hierarchyid 데이터 형식이 있는 테이블에서 DDL을 변경할 때는 DML이 변경되지 않았는지 확인합니다. 이 문제를 방지하려면 다음 단계를 수행합니다.

    1. 모든 DML을 테이블로 정지합니다.
    2. 캡처 작업을 실행하여 변경 내용을 처리합니다.
    3. 테이블에 대해 DDL을 실행합니다.
    4. 캡처 작업을 실행하여 DDL 변경 내용을 처리합니다.
    5. DML 처리를 다시 사용하도록 설정합니다.

    참고

    이 문제가 계속 발생하면 테이블에서 CDC를 사용하지 않도록 설정한 다음 다시 사용하도록 설정합니다.