在数据库复制或 CDC 中断时捕获更改增量

Bil*_*liD 7 replication sql-server change-data-capture

我工作的公司正在 Microsoft BI 堆栈上实施变更数据捕获,目的是捕获需要加载到数据仓库中的增量变更。到目前为止,这对我们来说效果很好,我们在复制的数据库上为我们需要跟踪的特定表和列设置了数据库复制设置和表级 CDC 设置。我们遇到的问题是复制和 CDC 都有可能被破坏。发生这种情况时,从中断到解决之间发生的任何更改都不会被捕获,因此无法传递到数据仓库。

我想知道识别所有增量并将它们加载到数据仓库中的最佳实践是什么?理论上,您可以重建整个数据仓库,但保留 2 类历史数据的最佳方法是什么?

RLF*_*RLF 2

假设发生严重故障导致您需要“重建”丢失的类型 2 更改,您也许可以使用源数据库数据和日志备份。如果您保留了这些备份,您可以执行类似以下过程概述的操作:

  1. 将源数据库的副本还原到发生故障之前的某个时间点。将数据库命名为[dbnameEmergency]
  2. 将日志增量恢复到[dbnameEmergency],例如 1 分钟、5 分钟、30 分钟,根据您想要处理增量的精细程度以减少损坏。
  3. 读取和比较增量恢复将需要创建快照(如果您有企业版),或者将日志恢复到待机模式以便读取数据。
  4. 将[dbnameEmergency]中的最新可读更改与[dbnameReplica] (您要直接设置的数据库)的状态进行比较,并编写代码以应用您能够推断到[dbnameReplica]的更改。

注意:如果您的数据库使用行版本(或时间戳)列,则查找更改的行会更简单。

这不是一个完美的过程,毫无疑问会遗漏一些细节。但它会给你一种方法来帮助你弥补损害。

话虽如此:这个过程是否值得付出努力取决于您。