Sql server SQL Server CDC:seqval如何在封面下工作?

Sql server SQL Server CDC:seqval如何在封面下工作?,sql-server,cdc,Sql Server,Cdc,关于_u$seqval值,我们做出以下假设: CDC表中唯一_u$seqval值的计数将等于 行数。 通过_u$seqval从CDC表中订购select将准确 复制内部事务和操作的顺序 CDC表中显示的事务。 这些假设是正确的,还是您只能通过同时包含start LSN和seqval来订购CDC数据 谢谢你和问候 对于1,我不确定,但我不会这样假设。我在表中看到了重复的序列值,在具有稍微不同的起始LSN的相关事务中。我从未注意到同一张表中存在重复项,但这并不意味着它不会发生 考虑到您的总体期望,使

关于_u$seqval值,我们做出以下假设:

CDC表中唯一_u$seqval值的计数将等于 行数。 通过_u$seqval从CDC表中订购select将准确 复制内部事务和操作的顺序 CDC表中显示的事务。 这些假设是正确的,还是您只能通过同时包含start LSN和seqval来订购CDC数据


谢谢你和问候

对于1,我不确定,但我不会这样假设。我在表中看到了重复的序列值,在具有稍微不同的起始LSN的相关事务中。我从未注意到同一张表中存在重复项,但这并不意味着它不会发生

考虑到您的总体期望,使用这四种方法的组合来生成事务及其操作的确定性列表。我倾向于使用:

按以下顺序订购:启动lsn ASC、\uuuuu$seqval ASC、\uuuu$command\u id ASC、\uuuuu$operation ASC

对于更正式的顺序,这里是我的服务器上每个CDC表的聚集索引定义,在为该表启用CDC时生成:

创建唯一聚集索引。。。 [uuu$start\u lsn]ASC, [\$command\u id]ASC, [[u\$seqval]ASC, [\uu$operation]ASC 包含源表主键的非聚集索引也是这样

_$command_id的注意事项:

SQL Server的用户无法正确排序这些。不过,系统不应该有问题。 此列在函数的输出中不可用,这些函数包含在官方文档中。这些函数为您做了一些事情,最重要的是使用NOLOCK查询以避免数据库争用,但我自己的大部分代码都直接查询这些表。