An insufficient number of arguments were supplied for the procedure or function cdc.fn_cdc_get_all_changes_

Alexander Galkin picture Alexander Galkin · Apr 30, 2013 · Viewed 31.1k times · Source

Seemingly valid code for querying the latest tracked changes in the table Fields:

DECLARE @Begin_LSN BINARY(10), @End_LSN BINARY(10)
SET @Begin_LSN = sys.fn_cdc_get_min_lsn('Fields')
SET @End_LSN = sys.fn_cdc_get_max_lsn()
SELECT * FROM cdc.fn_cdc_get_all_changes_ordering_Fields (@Begin_LSN, @End_LSN, N'all')
GO

generates the following error message:

Msg 313, Level 16, State 3, Line 5
An insufficient number of arguments were supplied for the procedure or function cdc.fn_cdc_get_all_changes_ ... .

However, if I check for actual values they all seem to be valid (not null), the query

SELECT @Begin_LSN, @End_LSN, N'all';

returns

0x00000000000000000000  0x00002594000002130001  all

Answer

Alexander Galkin picture Alexander Galkin · Apr 30, 2013

This error message is somewhat misleading and basically hints that some parameters might be out of bound. The message is not further customized because of the limitation of table functions.

The zero value (0x00000000000000000000) is not a valid one. The sys.fn_cdc_get_min_lsn() returns this value if it cannot find the appropriate capture instance name. This name might deviate from the actual table name. See this question for more details

See the following question for more details.