更改数据捕获问题

时间:2010-10-14 18:55:49

标签: sql-server

我正在尝试通过使用它来创建一个非常简单的复制过程来加快CDC的速度。假设我为表'A'和'B'设置了CDC,这恰好有一个FK关系,其中'A'是父,'B'是孩子。我想将这两个表的更改复制到另一个DB。

我正在考虑创建一个SSIS包(或其他东西)来读取与“A”和“B”相关联的CDC表,以定期移动更改。我试图找到解决方案的问题是这个。在我看来,因为'A'和'B'之间存在FK关系,我必须知道处理更改的顺序。例如,如果在两个表中插入行,我可能必须先在'A'中插入行,然后再插入'B'。或者,如果从两个表中删除行,我可能必须先从'B'删除行,然后再删除'A'。

所以,我的问题是这个。由于我添加更多表格会变得非常复杂,我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

这应该是一个问题:您只需按照应用于主数据库的顺序应用更改。由于更改通过了主要验证标准,因此它们也应该在副本上传递它。 cdc.fn_cdc_get_all_changes返回从更改LSN派生的更改序列号_$seqval。您只需按照此序列号逐一应用操作即可。