したがって、あなたが何を求めているかを100%理解しているとは言えませんが、テーブル内のすべてのメンバーの最新の値が必要な場合は、CDC テーブルを無視してテーブル自体にクエリを実行するだけです。ここにすべての最新の値があるからです。結局。
特定の期間内に変更されたすべてのメンバーの最新の値を確認する必要がある場合は、cdc.fn_cdc_get_net_changes_(capture_instance) 関数を使用する必要があります。詳細は次のとおりです。
cdc.fn_cdc_get_net_changes
これにより、キャプチャ期間の開始日と終了日を (LSN を実際の時間にマップできるようにする sys.fn_cdc_map_time_to_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