Đang cố gắng nhận các thay đổi ròng trên bảng đã bật CDC bằng cách chuyển các ngày Tối thiểu và Tối đa. Nhưng là ném dưới đây lỗi.Thay đổi lỗi chụp dữ liệu
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_ ... .
Mã của tôi là như sau:
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')
Đó có phải là from_lsn và to_lsn nhận được từ trận đấu doesnt sys.fn_cdc_map_time_to_lsn với được ánh xạ aginst bảng CDC 'nhân viên'
Dưới tác phẩm đang khỏe; nhưng nó nhận được tất cả các thay đổi ròng từ min max lsn's.
DECLARE @min_lsn BINARY(10) = sys.fn_cdc_get_min_lsn ('employee')
DECLARE @max_lsn BINARY(10) = sys.fn_cdc_get_max_lsn()
SELECT * FROM cdc.fn_cdc_get_net_changes_employee(@min_lsn, @max_lsn, 'all') ORDER BY 1 desc
Điều tôi cần là nhận min và tối đa lsn phiên bản cdc cho ngày cụ thể và nhận các thay đổi ròng cho ngày đó. Bất kì manh mối nào?
Edit:
này hoạt động tốt với bảng đầu tiên khi tôi cho phép trên loạt các bảng.
Ex:
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
này hoạt động tốt với bảng Employee. Nếu tôi thay đổi thứ tự mà trong đó chúng được bật CDC (nếu tôi đặt bộ lưu trữ đầu tiên và nhân viên tiếp theo), thì nó hoạt động tốt với danh sách nhân viên.
Những bài trên MSDN diễn đàn và trên Connect là bài viết của tôi mặc dù :-) . Đang tìm kiếm nếu có ai tìm ra cách thay thế để làm điều này. – Sreedhar
Xin lỗi vì điều đó. Tôi nên so sánh mã. Mã đó trong Chỉnh sửa, hoạt động cho bảng đầu tiên - nó có hoạt động với các bảng khác không? – Stoleg