Так что я не уверен на 100%, что понимаю, о чем вы просите, но если вам нужны последние значения для всех элементов в таблице, тогда игнорируйте таблицу CDC и просто запрашивайте саму таблицу, поскольку именно здесь находятся все последние значения. после всего.
Если вам нужно увидеть последние значения для всех элементов, которые были изменены в течение определенного периода времени, вам следует использовать функцию cdc.fn_cdc_get_net_changes_(capture_instance), подробно описанную здесь:
cdc.fn_cdc_get_net_changes
Это позволяет вам указать начальную и конечную дату для периода захвата (с помощью функции sys.fn_cdc_map_time_to_lsn, которая позволяет сопоставлять номера LSN с фактическим временем), а затем он выводит чистые изменения в таблицу в течение этого периода.
Изменения cdc.fn_cdc_get_net_changes_(capture_instance) генерируются в зависимости от имени вашей таблицы, поэтому, поскольку вы не указали, что это такое, я назвал его dbo_members, пожалуйста, измените при необходимости, вот пример того, как вы можете получить список последние значения для всех измененных элементов за последний день с использованием описанных выше функций:
DECLARE @begin_time DATETIME ,
@end_time DATETIME ,
@begin_lsn BINARY(10) ,
@end_lsn BINARY(10);
SELECT @begin_time = GETDATE() - 1 ,
@end_time = GETDATE();
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 [MemberID] ,
[LastName]
FROM cdc.fn_cdc_get_net_changes_dbo_members(@begin_lsn, @end_lsn, 'all')
GO
person
steoleary
schedule
06.02.2014