我们最近也开始研究CDC。我不是该主题的专家,但是我想我对您的问题有一些答案。
在大多数情况下,CDC将帮助您实现完全可追溯的历史目标,但我认为这不会帮助您一路走来。
首先:
我们经常对数据库架构进行更改...是否存在将CDC表更新为新架构的机制
这就是我认为CDC会让您失望的地方。在MSDN文档下“了解更改跟踪开销”的部分是相当清楚的,它不会跟踪你的架构更改。例如,使用Alter Table Add Column
:
如果将新列添加到更改跟踪表中,则不会跟踪该列的添加。仅跟踪对新列所做的更新和更改。
Drop Column
比较复杂。
但是,您应该使用数据库脚本来更改架构,因此您不必一定要依赖CDC。这样一来,您就可以在质量检查和生产模式之间保持一致。对质量检查的更改应通过脚本执行,以便可以将完全相同的更改应用于产品。从这些脚本中提取模式更改应该并不难。这可能意味着历史记录的“时间”维度由版本而不是实际时间来驱动,但是最终结果将是相同的。
如果还没有,请创建一个表来跟踪数据库模式的版本。然后将该数据库模式版本表放在CDC下,以便您可以将宏观更改与该模式相对应于特定表中的微观更改。
据我了解,无论CDC是否未显示架构更改,您仍然应该看到添加到新列的数据。从表到表的数据迁移也应由CDC负责。
迁移数据库架构时,如何处理捕获的数据有最佳实践?
像对待审核一样对待它。您需要了解正在检查的内容,为什么要检查它以及需要保持多长时间的信息。 当涉及到这样的任务时,范围和保留是两个最大的缺陷。
CDC的报告工具简直可以理解,因此您必须了解变更的背景。说“跟踪所有内容!” 太容易了。最终没有任何可用的结果。同样,通过保留每个更改的副本,您可以使数据库的大小增加一倍。在具有许多插入和删除功能的高流失表上,您最终将获得天文数字的增长。这本身并不是一件坏事,但是您需要为增长做出预算,并有一种方法可以检查所有生成的数据。
因此,这使您重新了解为什么要推动您具有完整的可追溯性。确实有此要求的正当理由。但是,除非您知道为什么必须满足该要求,否则您将无法构建对数据库的有效审核。