최소 및 최대 날짜를 전달하여 CDC 사용 가능 테이블에서 순 변경을 얻으려고합니다. 그러나 아래에 오류가 던지고있다.변경 데이터 캡처 오류
Msg 313, Level 16, State 3, Line 24
An insufficient number of arguments were supplied for the procedure or function cdc.fn_cdc_get_net_changes_ ... .
내 코드는 다음과 같습니다 :
DECLARE @CDate DATE = '2013-03-18' --This is the date after the CDC was enabled on the table
DECLARE @count INT;
DECLARE @lsnStartDatetime DATETIME;
DECLARE @lsnEndDateTime DATETIME;
DECLARE @begin_time DATETIME ,
@end_time DATETIME ,
@from_lsn BINARY(10) ,
@to_lsn BINARY(10);
SELECT @lsnStartDatetime = CAST(CAST(@CDate AS NVARCHAR(10)) + ' 00:00:00' AS DATETIME)
SELECT @lsnEndDateTime = CAST(CAST(@CDate AS NVARCHAR(10)) + ' 23:59:59' AS DATETIME)
SET @from_lsn = sys.fn_cdc_map_time_to_lsn('smallest greater than or equal',
@lsnStartDatetime);
SET @to_lsn = sys.fn_cdc_map_time_to_lsn('largest less than or equal',
@lsnEndDateTime);
if exists (select * from sys.objects where name = 'EmployeeCDCbyDate' and type = 'u')
drop table etl.EmployeeCDCbyDate
SELECT *
FROM cdc.fn_cdc_get_net_changes_employee(@from_lsn, @to_lsn, N'all')
가 from_lsn이되고 코드가 작동 다음은 CDC 테이블 '직원'
맞아야 매핑됩니다와 sys.fn_cdc_map_time_to_lsn 나던 경기에서지고 to_lsn 벌금; 하지만 min max lsn에서 모든 순 변화를 얻습니다.
내가 원하는 것은 주어진 날짜에 대해 최대 및 최소 lsn의 cdc 인스턴스를 가져 와서 해당 날짜에 대한 순 변경을 얻는 것입니다. 모든 단서?
편집 : 나는 테이블의 무리에 사용할 때
이 먼저 테이블 잘 작동합니다.
예는 :
USE ERP
EXEC sys.sp_cdc_disable_db
EXEC sys.sp_cdc_enable_db
EXEC sys.sp_cdc_enable_table @source_schema = N'dbo',
@source_name = N'Employee',
@capture_instance = 'Employee',
@supports_net_changes =1,
@role_name = NULL
EXEC sys.sp_cdc_enable_table @source_schema = N'dbo',
@source_name = N'StoreListing',
@capture_instance = 'StoreListing',
@supports_net_changes =1,
@role_name = NULL
Go
이 직원 테이블과 잘 작동합니다. 내가 CDC를 사용할 수있는 순서를 변경하면 (먼저 상점 목록을 저장하고 다음에 직원을 배치하면) 직원 목록과 잘 작동합니다.
그 모든 답변과 연결에 있었다 종료 LSN 번호
을했기 때문에 그 이유는 . 누군가가 이것을하기 위해 다른 방법을 찾은 경우 찾고 있습니다. – Sreedhar
죄송합니다. 코드를 비교해야했습니다. 첫 번째 테이블에서 작동하는 Edit의 코드는 다른 테이블에서도 작동합니까? – Stoleg