SQL Server CDC - 处理架构更改的问题

时间:2017-05-22 08:43:42

标签: sql-server cdc

我们的客户需要跟踪数据库中的数据更改,这些更改是在何时以及何时(保留在其他列中)。

以前我们通过插入镜像审计表的每个表上的触发器实现了这一点。我们永久保留这些数据(如果数据非常大,则只会采取行动存档)

构建到SQL服务器的更改数据捕获函数似乎非常相似,即。 sys.sp_cdc_enable_table。

问题是在更改表格(添加新列)后,我们需要关闭现有数据跟踪,然后再次指向不同的CDC表。不幸的是,sys.sp_cdc_disable_table删除了原始的跟踪表 - 是否有任何简单的方法来防止这种行为(理想情况下我只是希望它留在原地)?我似乎无法通过SQL Server Management Studio重命名该表。

我感谢我们可以编写脚本等来复制数据,但这比原始方法更省力。我怀疑我们可能不得不坚持原来的方法。

我很欣赏这不是CDC的设计目标,但如果我们能够将其付诸实践,它将简化我们的系统并节省一些精力。

1 个答案:

答案 0 :(得分:0)

不幸的是,我认为这是不可能的 - 这不是CDC的目的。

CDC方法比触发方法更好 - 它更高效,更可靠,因为它直接从事务日志中读取。在正常操作下,CDC将仅保留大约5天的历史记录,但清除是由您可以禁用的SQL代理作业驱动的。但是我认为最好的方法是让您定期从CDC表导出到您现有的审计表中(您说您可能还没准备好)。