상태 변수 정의Define a State Variable

이 절차에서는 CDC 상태가 저장되는 패키지 변수를 정의하는 방법을 설명합니다.This procedure describes how to define a package variable where the CDC state is stored.

CDC 상태 변수는 CDC 제어 태스크에 의해 로드, 초기화 및 업데이트되고 변경 레코드의 현재 처리 범위를 결정하기 위해 CDC 원본 데이터 흐름 구성 요소에 사용됩니다.The CDC state variable is loaded, initialized, and updated by the CDC Control task and is used by the CDC Source data flow component to determine the current processing range for change records. CDC 상태 변수는 CDC 제어 태스크 및 CDC 원본에 공통되는 모든 컨테이너에 정의할 수 있습니다.The CDC state variable can be defined on any container common to the CDC Control task and the CDC source. 이는 패키지 수준에 있을 수 있지만 루프 컨테이너와 같은 다른 컨테이너에 있을 수도 있습니다.This may be at the package level but may also be on other containers such as a loop container.

수동으로 CDC 상태 변수 값을 수정하는 것은 좋지 않지만 해당 내용을 이해하는 데에는 유용할 수 있습니다.Manually modifying the CDC state variable value is not recommended, however it can be useful to understand its contents.

다음 표에서는 CDC 상태 변수 값의 구성 요소를 자세히 설명합니다.The following table provides a high-level description of the components of the CDC state variable value.

구성 요소Component DescriptionDescription
<상태 이름 ><state-name> 현재 CDC 상태의 이름입니다.This is the name of the current CDC state.
CSCS 이렇게 하면 현재 처리 범위 시작점(현재 시작)이 표시됩니다.This marks the current processing range start point (Current Start).
<cs-lsn><cs-lsn> 이전 CDC 실행 시 마지막으로 처리된 LSN(로그 시퀀스 번호)입니다.This is the last (Log Sequence Number) LSN processed in the previous CDC run.
CECE 이렇게 하면 현재 처리 범위 끝점(현재 끝)이 표시됩니다.This marks the current processing range end point (Current End). CDC 상태에 CE 구성 요소가 있으면 CDC 패키지가 현재 처리 중이거나 해당 CDC 패키지에서 CDC 처리 범위를 완전히 처리하기 전에 실패했음을 나타냅니다.The presence of the CE component in the CDC state is an indication that either a CDC package is currently processing or that a CDC package failed before fully processing its CDC processing range.
<ce-lsn><ce-lsn> 현재 CDC 실행 시 마지막으로 처리된 LSN입니다.This is the last LSN to be processed in the current CDC Run. 항상 처리할 마지막 시퀀스 번호를 최대값(0xFFF…)으로 가정합니다.It is always assumed that the last sequence number to be processed is the maximum (0xFFF…).
IRIR 이렇게 하면 초기 처리 범위가 표시됩니다.This marks the initial processing range.
<ir-start><ir-start> 초기 로드가 시작되기 직전 변경 내용의 LSN입니다.This is an LSN of a change just before the initial load began.
<ir-end><ir-end> 초기 로드가 끝난 직후 변경 내용의 LSN입니다.This is an LSN of a change just after the initial load ended.
TSTS 이렇게 하면 마지막 CDC 상태 업데이트의 타임 스탬프가 표시됩니다.This marks the timestamp for the last CDC state update.
<timestamp><timestamp> System.DateTime.UtcNow 속성인 64비트의 10진수 표현입니다.This is a decimal representation of the 64-bit, System.DateTime.UtcNow property.
ERER 마지막 작업이 실패했을 때 표시되며 오류의 원인에 대한 간단한 설명이 포함되어 있습니다.This appears when the last operation failed and includes a short description of the cause of the error. 이 구성 요소가 있으면 항상 마지막에 표시됩니다.If this component is present, it will always appear last.
<short-error-text><short-error-text> 간단한 오류 설명입니다.This is the short error description.

LSN 및 시퀀스 번호는 LSN 값을 Binary(10)로 표현하는 최대 20자리의 16진수 문자열로 각각 인코딩됩니다.The LSNs and sequence numbers are each encoded as a hexadecimal string of up to 20 digits representing the LSN value of Binary(10).

다음 표에는 가능한 CDC 상태 값에 대한 설명이 나와 있습니다.The following table describes the possible CDC state values.

StateState DescriptionDescription
(INITIAL)(INITIAL) 현재 CDC 그룹에서 패키지가 실행되기 전의 초기 상태입니다.This is the initial state before the any package was run on the current CDC group. CDC 상태가 비어 있을 때의 상태이기도 합니다.This is also the state when the CDC state is empty.
ILSTART(초기 로드 시작)ILSTART (Initial Load Started) CDC 제어 태스크에 대한 MarkInitialLoadStart 작업 호출 이후 초기 로드 패키지를 시작할 때의 상태입니다.This is the state when the initial load package starts, after the MarkInitialLoadStart operation call to the CDC Control task.
ILEND(초기 로드 종료)ILEND (Initial Load Ended) CDC 제어 태스크에 대한 MarkInitialLoadEnd 작업 호출 이후 초기 로드 패키지가 성공적으로 끝날 때의 상태입니다.This is the state when the initial load package ends successfully, after the MarkInitialLoadEnd operation call to the CDC Control task.
ILUPDATE(초기 로드 업데이트)ILUPDATE (Initial Load Update) 초기 처리 범위를 처리 중인 동안 초기 로드 이후에 trickle feed 업데이트 패키지를 실행할 때의 상태입니다.This is the state on the runs of the trickle feed update package following the initial load, while still processing the initial processing range. CDC 제어 태스크에 대한 GetProcessingRange 작업 호출 이후에 발생합니다.This is after the GetProcessingRange operation call to the CDC Control task.

$reprocessing 열을 사용하는 경우 이 상태는 패키지가 이미 대상에 있는 행을 다시 처리하고 있을 수 있음을 나타내는 1로 설정됩니다.If using the $reprocessing column, it is set to 1 to indicate that the package may be re-processing rows already at the target.
TFEND(Trickle-Feed 업데이트 종료)TFEND (Trickle-Feed Update Ended) 일반 CDC 실행에 대해 예상되는 상태입니다.This is the state expected for regular CDC runs. 이 상태는 이전 실행이 성공적으로 완료되었으며 새 처리 범위를 사용한 새 실행을 시작할 수 있음을 나타냅니다.It indicates that the previous run completed successfully and that a new run with a new processing range can be started.
TFSTARTTFSTART 이 상태는 CDC 제어 태스크에 대한 GetProcessingRange 작업 호출 이후에 trickle feed 업데이트 패키지를 처음 실행하는 것이 아닌 두 번째 실행부터 발생하는 상태입니다.This is the state on a non-initial run of the trickle feed update package, after the GetProcessingRange operation call to the CDC Control task.

이 상태는 일반 CDC 실행이 시작되었지만 종료되지 않았거나 아직 확실하게 종료되지 않았음을 나타냅니다(MarkProcessedRange).This indicates that a regular CDC run is started but has not finished or has not yet finished, cleanly (MarkProcessedRange).
TFREDO(Trickle-Feed 업데이트 다시 처리)TFREDO (Reprocessing Trickle-Feed Updates) 이 상태는 TFSTART 실행 후 GetProcessingRange 에서 발생하는 상태입니다.This is the state on a GetProcessingRange that occurs after TFSTART. 이 상태는 이전 실행이 성공적으로 완료되지 않았음을 나타냅니다.This indicates that the previous run did not complete successfully.

$reprocessing 열을 사용하는 경우 이 상태는 패키지가 이미 대상에 있는 행을 다시 처리하고 있을 수 있음을 나타내는 1로 설정됩니다.If using the $reprocessing column, it is set to 1 to indicate that the package may be re-processing rows already at the target.
ERRORERROR CDC 그룹이 ERROR 상태에 있습니다.The CDC group is in an ERROR state.

다음은 CDC 상태 변수 값의 예입니다.The following are examples of CDC state variable values.

  • ILSTART/IR/0x0000162B158700000000//TS/2011-08-07T17:10:43.0031645/ILSTART/IR/0x0000162B158700000000//TS/2011-08-07T17:10:43.0031645/

  • ILSTART/IR/0x0000162B158700000000//TS/2011-08-07T17:10:43.0031645/ILSTART/IR/0x0000162B158700000000//TS/2011-08-07T17:10:43.0031645/

  • TFEND/CS/0x0000025B000001BC0003/TS/2011-07-17T12:05:58.1001145/TFEND/CS/0x0000025B000001BC0003/TS/2011-07-17T12:05:58.1001145/

  • TFSTART/CS/0x0000030D000000AE0003/CE/0x0000159D1E0F01000000/TS/2011-08-09T05:30:43.9344900/TFSTART/CS/0x0000030D000000AE0003/CE/0x0000159D1E0F01000000/TS/2011-08-09T05:30:43.9344900/

  • TFREDO/CS/0x0000030D000000AE0003/CE/0x0000159D1E0F01000000/TS/2011-08-09T05:30:59.5544900/TFREDO/CS/0x0000030D000000AE0003/CE/0x0000159D1E0F01000000/TS/2011-08-09T05:30:59.5544900/

CDC 상태 변수를 정의하려면To define a CDC state variable

  1. SQL Server Data ToolsSQL Server Data Tools에서 변수를 정의해야 하는 CDC 흐름이 있는 SQL Server 2017 Integration Services(SSIS)SQL Server 2017 Integration Services (SSIS) 패키지를 엽니다.In SQL Server Data ToolsSQL Server Data Tools, open the SQL Server 2017 Integration Services(SSIS)SQL Server 2017 Integration Services (SSIS) package that has the CDC flow where you need to define the variable.

  2. 패키지 탐색기 탭을 클릭하고 새 변수를 추가합니다.Click the Package Explorer tab, and add a new variable.

  3. 상태 변수로 인식할 수 있는 이름을 변수에 지정합니다.Give the variable a name that you can recognize as your state variable.

  4. 변수에 문자열 데이터 형식을 지정합니다.Give the variable a String data type.

    변수 정의의 일환으로 변수에 값을 지정하지 마십시오.Do not give the variable a value as part of its definition. 값은 CDC 제어 태스크에 의해 설정되어야 합니다.The value must be set by the CDC Control task.

    자동 상태 지속과 함께 CDC 제어 태스크를 사용하려는 경우 CDC 상태 변수는 사용자가 지정하는 데이터베이스 상태 테이블에서 읽히고 해당 값이 변경될 때 동일한 테이블로 다시 업데이트됩니다.If you plan to use the CDC Control task with Automatic State Persistence, the CDC State variable will be read from the database state table you specify and will be updated back to that same table when its value changes. 상태 테이블에 대한 자세한 내용은 CDC Control TaskCDC Control Task Editor를 참조하십시오.For more information about the State table, see CDC Control Taskand CDC Control Task Editor.

    자동 상태 지속과 함께 CDC 제어 태스크를 사용하지 않는 경우에는 패키지가 마지막으로 실행되었을 때 변수 값이 저장된 영구 저장소에서 해당 값을 로드하고 현재 처리 범위에 대한 처리가 완료될 때 영구 저장소에 다시 써야 합니다.If you are not using the CDC Control task with Automatic State Persistence then you must load the variable value from persistent storage where its value was saved the last time the package ran and to write it back to the persistent storage when the processing of the current processing range was completed.

관련 항목:See Also

CDC Control Task CDC Control Task
CDC 제어 태스크 편집기CDC Control Task Editor