对于某些情况,fn_cdc_map_lsn_to_time返回NULL

时间:2014-01-20 10:09:42

标签: sql-server cdc

我正在尝试在我的sql数据库中使用CDC,我使用存储过程将数据从临时CDC表移动到新表。我还移动了Start_lsn标记。在新表中,我尝试使用fn_cdc_map_lsn_to_time将lsn映射到time,对于某些记录,它返回null,而对于其他记录,它返回正确的时间,这是一个示例:

NULL                    0x000034D5000002F80001
2014-01-16 00:38:39.377 0x0000350F000006D70001

NULL                    0x00003513000003BA0001  2   0x3FFFFF
2014-01-18 02:00:05.320 0x0000351E000009FA0001  2   0x3FFFFF

有没有解释。

谢谢

1 个答案:

答案 0 :(得分:3)

我找到了答案,我只想将其添加到记录中。

这里的问题是我将记录从CDC表移动到我自己的表中,以防止它们被删除。

fn_cdc_map_lsn_to_time使用系统表将LSN从cdc表映射到时间戳。一段时间后,这些记录将被删除,这就是为什么某些记录由于最近添加而正确映射到时间的原因,

但旧的未映射,因为它们已被删除。