我刚刚开始使用 SQL Server 的变更数据捕获功能。我希望能够根据它们所属的事务从更改表中挑选出条目。有没有办法做到这一点?这些表中的事务 ID 字段似乎没有对应任何有意义的内容。
我意识到有 LSN,您可以查找一般的开始和结束时间,但是是否可以考虑同时运行的多个事务,每个事务都会影响不同的记录?(不同操作的开始和结束时间可能交错)
我刚刚开始使用 SQL Server 的变更数据捕获功能。我希望能够根据它们所属的事务从更改表中挑选出条目。有没有办法做到这一点?这些表中的事务 ID 字段似乎没有对应任何有意义的内容。
我意识到有 LSN,您可以查找一般的开始和结束时间,但是是否可以考虑同时运行的多个事务,每个事务都会影响不同的记录?(不同操作的开始和结束时间可能交错)
几分钟前我遇到了同样的问题。我做了一些谷歌搜索,似乎有一张cdc.lsn_time_mapping
桌子可以为你做这件事。
这是我使用它的方式(不确定这有多可靠,如果截断事务日志会发生什么等):
DECLARE @from_lsn binary(10), @to_lsn binary(10);
SET @from_lsn = sys.fn_cdc_get_min_lsn('Application_Person');
SET @to_lsn = sys.fn_cdc_get_max_lsn();
SELECT m.*, c.*
FROM cdc.fn_cdc_get_all_changes_Application_Person(@from_lsn, @to_lsn, N'all') c
INNER JOIN cdc.lsn_time_mapping m ON c.__$start_lsn = m.start_lsn
其他对未来读者有用的链接: