rau*_*uts 2 sql-server change-data-capture
我正在使用 SQL CDC 来跟踪 SQL Server 中多个表的更改。我想以正确的顺序报告这些更改,因为我有一个程序从每个 CDC 表收集数据。但我想确保这些表发生的所有更改都按正确的顺序报告。我可以依靠 LSN 来获得正确的序列吗?
小智 5
LSN 号对于给定事务是唯一的,但不是全局唯一的。如果同一事务中有多个记录,它们将在 cdc 中共享相同的 __$start_lsn 值。如果您想要正确的操作顺序,您需要按 __$start_lsn、__$seqval、然后 __$operation 排序。__$seqval 表示包装事务中各个操作的 id。
例如,我在 dbo 模式中有一个名为 foo 的表。它有一个 y 列。如果我运行这个语句:
INSERT INTO dbo.foo VALUES (1);
INSERT INTO dbo.foo VALUES (2);
Run Code Online (Sandbox Code Playgroud)
然后我将在 cdc 中看到两个单独的 LSN 值,因为它们位于两个单独的事务中。如果我运行这个:
BEGIN TRAN
INSERT INTO dbo.foo VALUES (1);
INSERT INTO dbo.foo VALUES (2);
COMMIT TRAN
Run Code Online (Sandbox Code Playgroud)
然后我将看到两条记录的一个 LSN 值,但它们将具有不同的 __$seqval 值,并且第一条记录的 seqval 将小于第二条记录的 seqval。
| 归档时间: |
|
| 查看次数: |
3409 次 |
| 最近记录: |