SQL Server 2008 CDC 功能实现数据变更捕获解决方案
28 浏览量
更新于2024-07-15
收藏 1.22MB PDF 举报
使用SQLServer2008的CDC功能实现数据变更捕获
CDC(Change Data Capture)是SQL Server 2008中的一项功能,用于捕获数据库中的数据变更操作。它可以记录数据库中的所有增删改操作,并将其存储在一个专门的表中,以便后续的数据分析和审核。下面是使用SQL Server 2008的CDC功能实现数据变更捕获的详细介绍。
背景
在SQL Server 2008之前,对数据变更的捕获通常使用触发器、时间戳等低效高成本的功能来实现。这使得许多系统都没有做数据变更或者仅仅对核心表做监控。但是自从SQL Server 2008引入了CDC功能后,解决了很多烦恼问题。
适用环境
CDC功能仅在SQL Server 2008(含)以后的企业版、开发版和评估版中可用。
详解
CDC功能主要捕获SQL Server指定表的增删改操作,由于任何操作都会写日志(哪怕truncate),所以CDC的捕获来源于日志文件。日志文件会把更改应用到数据文件中,同时也会标记符合要求的数据标记为需要添加跟踪的项。然后通过一些配套函数,最后写入到数据仓库中。
大概流程
步骤1:对目标库显式启用CDC
在当前库使用sys.sp_cdc_enable_db。返回0(成功)或1(失败)。注意,无法对系统数据库和分发数据库启用该功能。且执行者需要用sysadmin角色权限。
该存储过程的作用域是整个目标库。包含元数据、DDL触发器、cdc架构和cdc用户。
使用以下代码启用:
USE AdventureWorks
GO
EXECUTE sys.sp_cdc_enable_db;
GO
在一开始直接执行时,出现了报错信息:
1、消息22830,级别16,状态1,过程sp_cdc_enable_db_internal,第193行
2、无法更新元数据来指示已对数据库AdventureWorks启用了变更数据捕获。执行命令'SetCDCTracked(Value=1)'时失败。
返回的错误为15517:'无法作为数据库主体执行,因为主体"dbo"不存在、无法模拟这种类型的主体,或您没有所需的权限。'
步骤2:对目标表显式启用CDC
在当前库使用sys.sp_cdc_enable_table。返回0(成功)或1(失败)。
该存储过程的作用域是整个目标表。包含元数据、DDL触发器、cdc架构和cdc用户。
使用以下代码启用:
USE AdventureWorks
GO
EXECUTE sys.sp_cdc_enable_table @source_schema = 'HumanResources', @source_name = 'Department', @role_name = 'cdc_Admin';
GO
步骤3:捕获数据变更
使用sys.sp_cdc_get_all_changes存储过程可以捕获所有的数据变更操作。
使用以下代码捕获:
USE AdventureWorks
GO
DECLARE @begin_lsn binary(10), @commit_lsn binary(10)
EXEC sys.sp_cdc_get_all_changes @source_schema = 'HumanResources', @source_name = 'Department', @begin_lsn = @begin_lsn OUTPUT, @commit_lsn = @commit_lsn OUTPUT, @all_changes = 1;
GO
步骤4:清除CDC日志
使用sys.sp_cdc_purge存储过程可以清除CDC日志。
使用以下代码清除:
USE AdventureWorks
GO
EXEC sys.sp_cdc_purge;
GO
优点
使用CDC功能可以实现数据变更的捕获,可以记录数据库中的所有增删改操作,并将其存储在一个专门的表中,以便后续的数据分析和审核。同时,CDC功能还可以解决许多烦恼问题,如客户2个月前更改了一个数据,但是由于服务器空间不足,经常只能保留一个月的备份。此时客户为了逃避因为更改数据带来的较大负面影响,往往会把责任推给软件开发商或者运维商,如果此时有变更捕获的话,就有证据了。
使用SQL Server 2008的CDC功能可以实现数据变更的捕获,记录数据库中的所有增删改操作,并将其存储在一个专门的表中,以便后续的数据分析和审核。
311 浏览量
点击了解资源详情
257 浏览量
311 浏览量
1674 浏览量
点击了解资源详情
2024-11-19 上传
102 浏览量
2023-06-10 上传
weixin_38706603
- 粉丝: 10
- 资源: 923
最新资源
- 常见网络命令使用!!!
- 用C#实现的电子商务的文档
- proteus7.1+keil8.08
- 《AVR单片机的GCC软件设计》.pdf
- PLC控制电冰箱的灯光大小
- 全国计算机等级考试四级数据库工程师教程 课后答案
- 单片机基础教程-入门级
- 基于索引的SQL语句优化之降龙十八掌
- 如何在局域网安装Redmine(原创)
- 计算机网络答案 谢希仁
- E:\ATA认证复习题\70-228SQL Server 2000企业版的安装、配置和管理模.pdf
- Flex 性能简评:Flex 和 JavaServer Pages 应用程序的比较
- linux下的调试工具-GDB
- 2009软件设计师考试大纲
- ExtJS 最新实用简明教程
- FAT32文件系统中文版