[英]SQL Server CDC: How does __$seqval work under the covers?
关于__$seqval
值,我们进行以下假设:
__$seqval
值的计数将等于行数。 __$seqval
对CDC表中的选择进行排序将准确再现事务和事务在CDC表中出现时的顺序。 这些假设是正确的,还是只能通过同时包含启动LSN 和 seqval来订购CDC数据?
谢谢和问候!
对于#1,我不确定,但我不会做这个假设。 我看到在表中重复的序列值,在相关事务中起始LSN稍有不同。 我从未在同一张表中注意到重复项,但这并不意味着它不会发生。
关于整体期望,请使用所有四个序列值的组合来生成事务及其中操作的确定性列表。 我倾向于使用:
ORDER BY __$start_lsn ASC, __$seqval ASC, __$command_id ASC, __$operation ASC
为了获得更正式的命令,这是我的服务器上每个CDC表的聚集索引定义,该定义在为该表启用CDC时生成:
CREATE UNIQUE CLUSTERED INDEX ... (
[__$start_lsn] ASC,
[__$command_id] ASC,
[__$seqval] ASC,
[__$operation] ASC
)
包含源表主键的非聚集索引是相同的方法。
使用__$command_id
警告:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.