首页 > 开发 > 综合 > 正文

知方可补不足~用CDC功能来对数据库变更进行捕捉

2024-07-21 02:47:46
字体:
来源:转载
供稿:网友
知方可补不足~用CDC功能来对数据库变更进行捕捉

回到目录

如果我们希望监视一个数据表的变化,在sql2008之前的版本里,在数据库端可能想到的只有触发器,或者在程序端通过监视自己的insert,update,delete来实现相应的功能,这种实现无疑是让我们感到恐惧的,不够灵活的,而当进行sql2008后,这种情况得到了本质的改变,sql2008为我们提供了CDC功能,它可以实时对指定的数据表进行监控,当前它同时对产生SQL的一些负载。

CDC工作流程

CDC功能主要捕获SQLServer指定表的增删改操作,由于任何操作都会写日志(哪怕truncate),所以CDC的捕获来源于日志文件。日志文件 会把更改应用到数据文件中,同时也会标记符合要求的数据标记为需要添加跟踪的项。然后通过一些配套函数,最后写入到数据仓库中。

CDC实现步骤

第一步、对目标库显式启用CDC:

在当前库使用sys.sp_cdc_enable_db。返回0(成功)或1(失败)。注意,无法对系统数据库和分发数据库启用该功能。且执行者需要用sysadmin角色权限。

该存储过程的作用域是整个目标库。包含元数据、DDL触发器、cdc架构和cdc用户。

使用以下代码启用:

USE tableNameGoEXECUTE sys.sp_cdc_enable_dbGO
当设置好数据库的CDC功能后,我们可以查看一下是否已经设置成功
SELECT  IS_CDC_ENABLED ,        CASE WHEN IS_CDC_ENABLED = 0 THEN 'CDC功能禁用'             ELSE 'CDC功能启用'        END 描述FROM    SYS.DATABASESWHERE   NAME = 'tableName' 

同时,数据库的用户将会多了一个CDC用户

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表