다음을 통해 공유


<sys.fn_all_changes_capture_instance>(Transact-SQL)

적용 대상: SQL Server

모든 변경 내용 쿼리 함수에 대한 래퍼입니다. 이러한 함수를 만드는 데 필요한 스크립트는 저장 프로시저에서 sys.sp_cdc_generate_wrapper_function 생성됩니다. 만드는 sys.fn_all_changes_<capture_instance>데 사용되는 저장 프로시저에 대한 자세한 내용은 sys.sp_cdc_generate_wrapper_function(Transact-SQL)를 참조하세요.

Transact-SQL 구문 표기 규칙

구문

fn_all_changes_<capture_instance> ('start_time' ,'end_time', '<row_filter_option>' )  
  
<capture_instance> ::= The name of the capture instance.  
<row_filter_option> ::=  
{ all  
  | all update old  
}  

인수

start_time

결과 집합에 포함할 변경 테이블 항목 범위의 하위 엔드포인트를 나타내는 datetime 값입니다.

연결된 커밋 시간이 start_time보다 큰 변경 테이블의 행 cdc.<capture_instance>_CT 만 결과 집합에 포함됩니다.

이 인수에 값 NULL을 제공하면 쿼리 범위의 하위 엔드포인트가 캡처 인스턴스에 대해 유효한 범위의 하위 엔드포인트에 대응됩니다.

@start_time 또는 @end_time 매개 변수 값이 가장 낮은 LSN 또는 가장 높은 LSN의 시간을 초과하면 생성된 래퍼 함수의 실행은 오류 313 Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function에서 반환됩니다. 이 오류는 개발자가 처리해야 합니다.

end_time

결과 집합에 포함할 변경 테이블 항목 범위의 상위 엔드포인트를 나타내는 datetime 값입니다.

이 매개 변수는 래퍼 함수에 대한 만들기 스크립트를 생성하기 위해 @closed_high_end_point 호출되는 경우에 sys.sp_cdc_generate_wrapper_function 대해 선택한 값에 따라 두 가지 가능한 의미 중 하나를 사용할 수 있습니다.

  • @closed_high_end_point = 1

    연결된 커밋 시간이 end_time 이하인 변경 테이블의 행 cdc.<capture_instance>_CT 만 결과 집합에 포함됩니다.

  • @closed_high_end_point = 0

    연결된 커밋 시간이 end_time 미만인 변경 테이블의 행 cdc.capture_instance_CT 만 결과 집합에 포함됩니다.

이 인수에 대해 NULL 값을 제공하는 경우 쿼리 범위의 상위 엔드포인트는 캡처 인스턴스에 유효한 범위의 상위 엔드포인트에 해당합니다.

@start_time 또는 @end_time 매개 변수 값이 가장 낮은 LSN 또는 가장 높은 LSN의 시간을 초과하면 생성된 래퍼 함수의 실행은 오류 313 Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function에서 반환됩니다. 이 오류는 개발자가 처리해야 합니다.

<> row_filter_option ::= { all | all update old }

메타데이터 열의 내용과 결과 집합에서 반환되는 행을 제어하는 옵션입니다.

다음 옵션 중 하나일 수 있습니다.

all
지정된 LSN 범위 내의 모든 변경 내용을 반환합니다. 업데이트 작업으로 인해 발생하는 변경 내용의 경우 이 옵션은 업데이트가 적용된 후 새 값이 포함된 행만 반환합니다.

all update old
지정된 LSN 범위 내의 모든 변경 내용을 반환합니다. 업데이트 작업으로 인해 발생하는 변경 내용의 경우 이 옵션은 업데이트 전과 업데이트 후에 열 값이 포함된 두 개의 행을 반환합니다.

반환된 테이블

열 이름 열 유형 설명
__CDC_STARTLSN binary(10) 변경 내용과 연결된 트랜잭션의 커밋 LSN입니다. 동일한 트랜잭션에서 커밋된 모든 변경 내용은 동일한 커밋 LSN을 공유합니다.
__CDC_SEQVAL binary(10) 트랜잭션의 행 변경 내용을 정렬하는 데 사용되는 시퀀스 값입니다.
<열의 @column_list> 다양함 래퍼 함수를 만드는 스크립트를 생성하기 sp_cdc_generate_wrapper_function 위해 호출될 때 column_list 인수에서 식별되는 열입니다.
__CDC_OPERATION nvarchar(2) 대상 환경에 행을 적용하는 데 필요한 작업을 나타내는 작업 코드입니다. 호출에 제공된 인수 row_filter_option 값에 따라 달라집니다.

row_filter_option = 'all'

'D' - 삭제 작업

'I' - 삽입 작업

'UN' - 업데이트 작업 새 값

row_filter_option = '모든 업데이트 이전'

'D' - 삭제 작업

'I' - 삽입 작업

'UN' - 업데이트 작업 새 값

'UO' - 업데이트 작업 이전 값
<열의 @update_flag_list> bit 열 이름에 _uflag 추가하여 비트 플래그의 이름을 지정합니다. __CDC_OPERATION 'UO'의 'D', 'I'인 경우 플래그는 항상 NULL로 설정됩니다. __CDC_OPERATION 'UN'인 경우 업데이트에서 해당 열에 대한 변경을 생성한 경우 1로 설정됩니다. 그렇지 않은 경우, 0.

설명

이 함수는 fn_all_changes_<capture_instance> 쿼리 함수의 cdc.fn_cdc_get_all_changes_<capture_instance> 래퍼 역할을 합니다. sys.sp_cdc_generate_wrapper 저장 프로시저는 래퍼를 만드는 스크립트를 생성하는 데 사용됩니다.

래퍼 함수는 자동으로 만들어지지 않습니다. 래퍼 함수를 만들려면 다음 두 가지 작업을 수행해야 합니다.

  1. 래퍼 생성 스크립트를 만드는 저장 프로시저를 실행합니다.

  2. 스크립트를 실행하여 실제로 래퍼 함수를 만듭니다.

래퍼 함수를 사용하면 사용자가 LSN 값이 아닌 datetime 값으로 제한된 간격 내에 발생한 변경 내용을 체계적으로 쿼리할 수 있습니다. 래퍼 함수는 제공된 datetime 값과 내부적으로 쿼리 함수에 대한 인수로 필요한 LSN 값 간에 필요한 모든 변환을 수행합니다. 변경 데이터 스트림을 처리하기 위해 래퍼 함수가 직렬로 사용된 경우 특정 호출과 연결된 간격의 @end_time 값이 후속 호출과 연결된 간격의 @start_time 값으로 제공된다는 규칙을 준수하면 데이터가 손실되거나 반복되지 않습니다.

스크립트를 만들 때 매개 변수를 @closed_high_end_point 사용하여 지정된 쿼리 창에서 닫힌 상한 또는 열린 상한을 지원하는 래퍼를 생성할 수 있습니다. 즉, 커밋 시간이 추출 간격의 상한과 같은 항목을 간격에 포함할지 여부를 결정할 수 있습니다. 기본적으로 상한이 포함됩니다.

모든 변경 래퍼 함수에서 반환하는 결과 집합은 변경 테이블의 __$start_lsn 및 __$seqval 열을 각각 열 __CDC_STARTLSN 및 __CDC_SEQVAL 반환합니다. 래퍼가 생성될 때 @column_list 매개 변수에 나타난 추적된 열만 이 단계를 따릅니다. @column_list NULL이면 추적된 모든 원본 열이 반환됩니다. 원본 열 뒤에는 작업을 식별하는 한 문자 또는 두 문자 열인 작업 열 __CDC_OPERATION이 옵니다.

그런 다음, 매개 변수에서 식별되는 각 열의 결과 집합에 비트 플래그가 추가됩니다 @update_flag_list . 모든 변경 래퍼의 경우 __CDC_OPERATION 'D', 'I' 또는 'UO'인 경우 비트 플래그는 항상 NULL이 됩니다. __CDC_OPERATION 'UN'인 경우 업데이트 작업으로 인해 열이 변경되었는지 여부에 따라 플래그가 1 또는 0으로 설정됩니다.

변경 데이터 캡처 구성 템플릿 '스키마용 CDC 래퍼 TVF 인스턴스화'는 저장 프로시저를 사용하여 sp_cdc_generate_wrapper_function 스키마의 정의된 쿼리 함수에 대한 모든 래퍼 함수에 대한 CREATE 스크립트를 가져오는 방법을 보여 줍니다. 그런 다음 템플릿은 해당 스크립트를 만듭니다. 템플릿에 대한 자세한 내용은 템플릿 탐색기를 참조하세요.

래퍼 함수는 sys.fn_all_changes_<capture_instance> 시스템 함수 및 sys.fn_net_changes_<capture_instance> cdc.fn_cdc_get_net_changes_<capture_instance>.에 종속됩니다cdc.fn_cdc_get_all_changes_<capture_instance>. 제공된 LSN 범위가 호출 cdc.fn_cdc_get_all_changes_<capture_instance> 하거나 cdc.fn_cdc_get_net_changes_<capture_instance>호출할 때 적절하지 않은 경우 오류 313이 필요합니다. 매개 변수가 lsn_value 가장 낮은 LSN 또는 가장 높은 LSN의 시간을 초과하면 이러한 함수를 실행하면 오류 313 Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function이 반환됩니다. 이 오류는 개발자가 처리해야 합니다.

참고 항목