CDC Control Task

적용 대상: Azure Data Factory의 SQL Server SSIS Integration Runtime

Important

CDC 제어 태스크, CDC 원본 및 CDC 분할자를 포함한 CDC 흐름 구성 요소는 더 이상 사용되지 않습니다. 자세한 내용은 공지 사항을 참조하세요.

CDC 제어 태스크는 CDC(변경 데이터 캡처) 패키지의 수명 주기를 제어하는 데 사용됩니다. CDC 패키지는 CDC 패키지의 실행에서 처리되는 초기 로드 패키지, LSN(로그 시퀀스 번호) 범위 관리를 사용하여 CDC 패키지 동기화를 처리합니다. 또한 CDC 제어 태스크는 오류 시나리오 및 복구를 처리합니다.

CDC 제어 태스크는 기본 SSIS 패키지 변수에서 CDC 패키지의 상태를 확인하고 데이터베이스 테이블에 유지하여 상태를 기본패키지 활성화와 공통 CDC 프로세스를 함께 수행하는 여러 패키지 간에 발생할 수 있습니다(예: 한 작업은 초기 로드를 담당하고 다른 작업은 트리클 피드 업데이트에 대한 책임이 있을 수 있음).

CDC 제어 태스크는 두 작업 그룹을 지원합니다. 한 그룹은 초기 로드 및 변경 처리의 동기화를 처리하고 다른 그룹은 CDC 패키지 실행에 대한 LSN의 변경 처리 범위를 관리하고 성공적으로 처리된 내용을 추적합니다.

다음 작업은 초기 로드 및 변경 처리의 동기화를 처리합니다.

연산 설명
ResetCdcState 이 작업은 현재 CDC 컨텍스트와 연결된 영구 CDC 상태를 다시 설정하는 데 사용됩니다. 이 작업을 실행한 후 LSN 타임스탬프 sys.fn_cdc_get_max_lsn 테이블의 현재 최대 LSN은 다음 처리 범위에 대한 범위의 시작이 됩니다. 이 작업을 수행하려면 원본 데이터베이스에 연결해야 합니다.
MarkInitialLoadStart 이 작업은 초기 로드 패키지가 원본 테이블을 읽기 시작하기 전에 원본 데이터베이스에 현재 LSN을 기록하기 위해 초기 로드 패키지의 시작 부분에서 사용됩니다. 이렇게 하려면 호출 sys.fn_cdc_get_max_lsn할 원본 데이터베이스에 대한 연결이 필요합니다.

SQL Server CDC(즉, Oracle이 아님)에서 작업할 때 MarkInitialLoadStart를 선택하는 경우 연결 관리자에 지정된 사용자는 db_owner 또는 sysadmin이어야 합니다.
MarkInitialLoadEnd 이 작업은 초기 로드 패키지의 끝 부분에서 초기 로드 패키지가 원본 테이블 읽기를 완료한 후 현재 LSN을 원본 데이터베이스에 기록하기 위해 사용됩니다. 이 LSN은 이 작업이 발생한 현재 시간을 기록한 다음 CDC 데이터베이스의 cdc.lsn_time_매핑 테이블을 쿼리하여 해당 시간 이후에 발생한 변경 사항을 검색하여 결정됩니다.

SQL Server CDC(즉, Oracle이 아님)에서 작업할 때 MarkInitialLoadEnd를 선택하는 경우 연결 관리자에 지정된 사용자는 db_owner 또는 sysadmin이어야 합니다.
MarkCdcStart 이 작업은 스냅샷 데이터베이스에서 초기 로드가 수행되는 경우에 사용됩니다. 이 경우 변경 처리는 스냅샷 LSN 직후에 시작되어야 합니다. 사용할 스냅샷 데이터베이스의 이름을 지정할 수 있으며 CDC Control 태스크는 SQL Server에서 스냅샷 LSN을 쿼리합니다. 스냅샷 LSN을 직접 지정하는 옵션도 있습니다.

SQL Server CDC(즉, Oracle이 아님)에서 작업할 때 MarkCdcStart를 선택하는 경우 연결 관리자에 지정된 사용자는 db_owner 또는 sysadmin이어야 합니다.

다음 작업은 처리 범위를 관리하는 데 사용됩니다.

연산 설명
GetProcessingRange 이 작업은 CDC 원본 데이터 흐름을 사용하는 데이터 흐름을 호출하기 전에 사용됩니다. 이 작업은 호출될 때 CDC 원본 데이터 흐름에서 읽는 LSN의 범위를 설정합니다. 범위는 데이터 흐름 처리 중에 CDC 원본에서 사용하는 SSIS 패키지 변수에 저장됩니다.

저장된 상태에 대한 자세한 내용은 상태 변수 정의를 참조 하세요.
MarkProcessedRange : CDC 데이터 흐름이 성공적으로 완료된 후 각 CDC 실행 후에 이 작업이 실행되어 CDC 실행에서 완전히 처리된 마지막 LSN을 기록합니다. 다음에 GetProcessingRange가 실행될 때 이 위치는 처리 범위의 시작입니다.

CDC 상태 지속성 처리

CDC 제어 태스크는 기본 활성화 간의 영구적 상태를 확인합니다. CDC 상태에 저장된 정보는 CDC 패키지의 처리 범위를 확인하고 기본 오류 조건을 검색하는 데 사용됩니다. 영구 상태는 문자열로 저장됩니다. 자세한 내용은 상태 변수 정의를 참조 하세요.

CDC 제어 태스크는 두 가지 유형의 상태 지속성을 지원합니다.

  • 수동 상태 지속성: 이 경우 CDC 제어 태스크는 패키지 변수에 저장된 상태를 관리하지만 패키지 개발자는 CDC Control을 호출하기 전에 영구 저장소에서 변수를 읽은 다음 CDC 컨트롤이 마지막으로 호출되고 CDC 실행이 완료된 후 해당 영구 저장소에 다시 기록해야 합니다.

  • 자동 상태 지속성: CDC 상태는 데이터베이스의 테이블에 저장됩니다. 상태는 상태를 저장하기 위해 선택한 연결 관리자에 있는 상태 저장에 사용할 테이블 속성에 있는 테이블의 StateName 속성에 제공된 이름 아래에 저장됩니다. 기본값은 원본 연결 관리자이지만 대상 연결 관리자를 사용하는 것이 일반적입니다. CDC 제어 태스크는 상태 테이블의 상태 값을 업데이트하며 이는 앰비언트 트랜잭션의 일부로 커밋됩니다.

오류 처리

CDC 제어 태스크는 다음과 같은 경우 오류를 보고할 수 있습니다.

  • 영구 CDC 상태를 읽지 못하거나 영구 상태를 업데이트하지 못할 때 실패합니다.

  • 원본 데이터베이스에서 현재 LSN 정보를 읽지 못할 경우

  • CDC 상태 읽기가 일관되지 않습니다.

이러한 모든 경우에서 CDC Control 태스크는 SSIS가 제어 흐름 오류를 처리하는 표준 방식으로 처리할 수 있는 오류를 보고합니다.

처리 범위 가져오기 작업이 처리 범위 표시를 호출하지 않고 처리 범위 가져오기 작업 직후에 호출될 때 CDC 제어 태스크에서 경고를 보고할 수도 있습니다. 이는 이전 실행이 실패했거나 동일한 CDC 상태 이름을 사용하는 다른 CDC 패키지가 실행되고 있을 수 있음을 나타냅니다.

CDC 제어 태스크 구성

SSIS 디자이너를 사용하거나 프로그래밍 방식으로 속성을 설정할 수 있습니다.

섹션 내용

상태 변수 정의

CDC 제어 태스크 편집기

CDC 제어 태스크 편집기 대화 상자를 사용하여 CDC 제어 태스크를 구성합니다. CDC 제어 태스크 구성에는 CDC 데이터베이스에 대한 연결 정의, CDC 작업 작업 및 상태 관리 정보가 포함됩니다.

CDC 제어 태스크에 대한 자세한 내용은 CDC 제어 태스크를 참조 하세요.

CDC 제어 태스크 편집기를 열려면

  1. SQL Server Data Tools에서 CDC Control 태스크가 있는 SQL Server 2019 Integration Services(SSIS) 패키지를 엽니다.

  2. 제어 흐름 탭에서 CDC Control 작업을 두 번 클릭합니다.

옵션

SQL Server CDC 데이터베이스 ADO.NET 연결 관리자
목록에서 기존 연결 관리자를 선택하거나 새로 만들기를 클릭하여 새 연결을 만듭니다. CDC에 대해 사용하도록 설정되고 선택한 변경 테이블이 있는 SQL Server 데이터베이스에 연결해야 합니다.

CDC 제어 작업
이 태스크에 대해 실행할 작업을 선택합니다. 모든 작업은 상태를 저장하고 패키지의 다른 구성 요소 간에 전달하는 SSIS 패키지 변수에 저장되는 상태 변수를 사용합니다.

  • 초기 로드 시작 표시: 이 작업은 스냅샷 없이 활성 데이터베이스에서 초기 로드를 실행할 때 사용됩니다. 이 작업은 초기 로드 패키지의 시작 부분에서 초기 로드 패키지가 원본 테이블을 읽기 시작하기 전에 현재 LSN을 원본 데이터베이스에 기록하기 위해 호출됩니다. 이렇게 하려면 원본 데이터베이스에 연결해야 합니다.

    SQL Server CDC(즉, Oracle이 아님)에서 작업할 때 초기 로드 시작 표시를 선택하는 경우 연결 관리자에 지정된 사용자는 db_owner 또는 sysadmin이어야 합니다.

  • 초기 로드 끝 표시: 이 작업은 스냅샷 없이 활성 데이터베이스에서 초기 로드를 실행할 때 사용됩니다. 이 작업은 초기 로드 패키지의 끝 부분에서 초기 로드 패키지가 원본 테이블 읽기를 완료한 후 현재 LSN을 원본 데이터베이스에 기록하기 위해 호출됩니다. 이 LSN은 이 작업이 발생한 현재 시간을 기록한 다음 CDC 데이터베이스의 cdc.lsn_time_매핑 테이블을 쿼리하여 해당 시간 이후에 발생한 변경 사항을 검색하여 결정됩니다.

    SQL Server CDC(즉, Oracle이 아님)에서 작업할 때 초기 로드 끝 표시를 선택하는 경우 연결 관리자에 지정된 사용자는 db_owner 또는 sysadmin이어야 합니다.

  • CDC 시작 표시: 이 작업은 스냅샷 데이터베이스 또는 정지 데이터베이스에서 초기 로드를 수행할 때 사용됩니다. 초기 로드 패키지 내의 모든 지점에서 호출됩니다. 이 작업은 스냅샷 LSN일 수 있는 매개 변수, 스냅샷 데이터베이스의 이름(스냅샷 LSN이 자동으로 파생됨) 또는 비워 둘 수 있는 매개 변수를 허용합니다. 이 경우 현재 데이터베이스 LSN은 변경 처리 패키지의 시작 LSN으로 사용됩니다.

    이 작업은 Mark Initial Load Start/End 작업 대신 사용됩니다.

    SQL Server CDC(즉, Oracle이 아님)에서 작업할 때 CDC 시작 표시를 선택하는 경우 연결 관리자에 지정된 사용자는 db_owner 또는 sysadmin이어야 합니다.

  • 처리 범위 가져오기: 이 작업은 CDC 원본 데이터 흐름을 사용하는 데이터 흐름을 호출하기 전에 변경 처리 패키지에서 사용됩니다. 이 작업은 호출될 때 CDC 원본 데이터 흐름에서 읽는 LSN의 범위를 설정합니다. 범위는 데이터 흐름 처리 중에 CDC 원본에서 사용하는 SSIS 패키지 변수에 저장됩니다.

    저장된 가능한 CDC 상태에 대한 자세한 내용은 상태 변수 정의를 참조 하세요.

  • 처리된 범위 표시: 이 작업은 CDC 실행의 끝 부분에서 CDC 데이터 흐름이 성공적으로 완료된 후 CDC 실행 중에 완전히 처리된 마지막 LSN을 기록하기 위해 변경 내용 처리 패키지에서 사용됩니다. 다음에 GetProcessingRange 를 실행하면 이 위치에 따라 다음 처리 범위의 시작 부분이 결정됩니다.

  • CDC 상태 다시 설정: 이 작업은 현재 CDC 컨텍스트에 연결된 영구 CDC 상태를 다시 설정하는 데 사용됩니다. 이 작업을 실행한 후 LSN 타임스탬프 sys.fn_cdc_get_max_lsn 테이블의 현재 최대 LSN은 다음 처리 범위에 대한 범위의 시작이 됩니다. 이 작업을 수행하려면 원본 데이터베이스에 연결해야 합니다.

    이 작업을 사용하는 예로는 새로 만든 변경 레코드만 처리하고 이전 변경 레코드는 모두 무시하려는 경우가 있습니다.

CDC 상태를 포함하는 변수
작업 작업의 상태 정보를 저장하는 SSIS 패키지 변수를 선택합니다. 시작하기 전에 변수를 정의해야 합니다. 자동 상태 지속성을 선택하면 상태 변수가 로드되고 자동으로 저장됩니다.

상태 변수 정의에 대한 자세한 내용은 상태 변수 정의를 참조 하세요.

CDC/스냅샷 이름을 시작하는 SQL Server LSN:
CDC가 시작되는 위치를 결정하기 위해 초기 로드가 수행되는 스냅샷 데이터베이스의 이름 또는 현재 원본 데이터베이스 LSN을 입력합니다. CDC 제어 작업이 CDC 시작 표시로 설정된 경우에만 사용할 수 있습니다.

이러한 작업에 대한 자세한 내용은 CDC 제어 태스크를 참조하세요 .

데이터베이스 테이블에 자동으로 상태 저장
CDC 제어 태스크를 통해 지정한 데이터베이스에 포함된 상태 테이블에 CDC 상태를 로드하고 저장하는 작업을 자동으로 처리하려면 이 확인란을 선택합니다. 이 확인란이 선택되어 있지 않으면 개발자가 패키지가 시작될 때 CDC 상태를 로드하고 CDC 상태가 변경될 때마다 해당 상태를 저장해야 합니다.

상태가 저장된 데이터베이스에 대한 커넥트ion 관리자
목록에서 기존 ADO.NET 연결 관리자를 선택하거나 새로 만들기를 클릭하여 새 연결을 만듭니다. 이 연결은 상태 테이블을 포함하는 SQL Server 데이터베이스에 대한 연결입니다. 상태 테이블은 상태 정보를 포함합니다.

자동 상태 지속성이 선택되고 필수 매개 변수인 경우에만 사용할 수 있습니다.

상태를 저장하는 데 사용할 테이블
CDC 상태를 저장하는 데 사용할 상태 테이블의 이름을 입력합니다. 지정된 테이블에는 이름과 상태라는 두 개의 열이 있어야 하며 두 열 모두 varchar(256) 데이터 형식이어야 합니다.

필요에 따라 새로 만들기 를 선택하여 필수 열이 포함된 새 상태 테이블을 작성하는 SQL 스크립트를 가져올 수도 있습니다. 자동 상태 지속성을 선택하면 개발자는 위에 나열된 요구 사항에 따라 상태 테이블을 만들어야 합니다.

자동 상태 지속성이 선택되고 필수 매개 변수인 경우에만 사용할 수 있습니다.

상태 이름
영구 CDC 상태와 연결할 이름을 입력합니다. 동일한 CDC 컨텍스트에서 작동하는 전체 로드 및 CDC 패키지는 공통 상태 이름을 지정합니다. 이 이름은 상태 테이블에서 상태 행을 조회하는 데 사용됩니다.