关于CDC功能的答疑
昨天在讲解SQL Server BI新特性的时候,提到了SQL Server 2008数据库引擎的一个增强,就是CDC(Change Data Capture):变更数据捕获。
看起来大家对这个功能都挺感兴趣,不少朋友提问。我整理一下有关的关键点
1. CDC的目的是什么?
CDC就是极大地方便了我们获取某个表数据更新情况的一个机制。它通过一个独立的进程,异步读取日志文件,而不是触发器的方式工作。而且它的数据是会持久化保存到一个系统表的。
2. CDC是不是SQL Server 2008特有的功能,对别的数据库或者早期版本是否起作用?
CDC是SQL Server 2008特有的功能,而且是企业版特有的功能。开发版也有该功能,但仅用于测试场合。
3. CDC读取日志,那么如何日志被截断了会怎么样?
如果某部分日志,CDC的进程还没有读取,那么在截断日志时就会忽略这个部分。
捕获进程是一个独立的,它随着代理服务启动而启动。两次扫描之间间隔5分钟。
4. 系统表中的数据是否会永久存在?
不会,它会被保留3天。会有一个清理的作业,每天晚上2点进行扫描。
最后,补充一点的是,CDC功能依赖Agent服务,因为它有两个操作都是通过作业来启动的。