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')
source
share