Error executing sql query to modify data

I get this error "Not enough arguments were provided for the procedure or function cdc.fn_cdc_get_all_changes_" when trying to execute the following SQL query.

use SpatialDB
go
declare @begin_time datetime, @end_time datetime, @from_lsn binary(10), @to_lsn binary(10);
set @begin_time=GETDATE()-1;
set @end_time=GETDATE();
set @from_lsn=sys.fn_cdc_map_time_to_lsn('smallest greater than or equal', @begin_time);
set @to_lsn=sys.fn_cdc_map_time_to_lsn('largest greater than or eqaul', @end_time);
select * from cdc.fn_cdc_get_net_changes_dbo_Points(@from_lsn, @to_lsn, N'all');
go
0
source share
4 answers

Mecdc.fn_cdc_get_net_changes_dbo_Points requires more arguments. Find the definition of this function to see what it expects so that you can give it the correct number of arguments. This is one of your functions, so none of us knows what arguments should be.

0
source

Late, but for future seekers.,.

. , , "", .

TechNet SQL Server 2008 . .

LSN, TVF . , , TVF.

, , , , , .

Msg 313, 16, 3, 1

function cdc.fn_cdc_get_all_changes_...

, , - :

Msg 313, 16, 3, 1

function cdc.fn_cdc_get_net_changes_...

SQL Server 2012, , , CDC. , , , - .

0

, .,.

, , LSN LSN. , , .

:

SELECT DISTINCT sh.siteid1 AS 'Site Number' ,CASE cdc.__$operation WHEN 1 THEN 'D' WHEN 2 THEN 'I' WHEN 4 THEN 'U' END AS CDC_OPERATION FROM site_header sh(NOLOCK) INNER JOIN cdc.fn_cdc_get_net_changes_dbo_svt_svsiteheader(0x00004B04000019300002, 0x00004B0500003A220001, N'All') cdc ON cdc.site_id = sh.site_id LEFT JOIN site_location sl ON sh.id_site = sl.id_site AND sh.primary_id = sl.id_rec

0
source

I had the same problem and Gerald had a place - if I use LSN within the CDC data range, no problem.

Now I override my LSN values ​​with sys.fn_cdc_get_min_lsn('my_captureinstance')and sys.fn_cdc_get_max_lsn(), for example:

DECLARE @begin_time DATETIME, @end_time DATETIME, @begin_lsn BINARY(10), @end_lsn BINARY(10), @min_lsn BINARY(10), @max_lsn BINARY(10);

SET @begin_time = '2015-06-23 00:00:00.000';
SET @end_time   = '2015-06-24 00:00:00.000';

SELECT @begin_lsn = sys.fn_cdc_map_time_to_lsn('smallest greater than', @begin_time);
SELECT @end_lsn = sys.fn_cdc_map_time_to_lsn('largest less than or equal', @end_time);

SELECT @min_lsn = sys.fn_cdc_get_min_lsn('my_captureinstance')
SELECT @max_lsn = sys.fn_cdc_get_max_lsn()

IF @begin_lsn < @min_lsn BEGIN
  SELECT @begin_lsn = @min_lsn
END

IF @end_lsn > @max_lsn BEGIN
  SELECT @end_lsn = @max_lsn
END

SELECT * FROM cdc.fn_cdc_get_net_changes_my_captureinstance(@begin_lsn, @end_lsn, 'all')
0
source

All Articles