------准备------数据库
CREATE DATABASE db_test_cdc CREATE TABLE t1(id INT IDENTITY(1,1) ,name VARCHAR(50)); INSERT INTO t1(name)VALUES('test')
------开始------架构
--启用数据库变动捕获测试
使用变动捕获首先须要启用数据库变动捕获,执行以下存储过程,启用变动捕获spa
USE db_test_cdc EXEC sys.sp_cdc_enable_db GO
启用完之后SQL SERVER会自动建立一系列有关变动捕获的讯息,以下:3d
--启用表变动捕获代理
启用变动捕获之后,就能够针对表开启捕获,执行以下SQLcode
EXEC sys.sp_cdc_enable_table @source_schema = N'dbo', --表架构名字 @source_name = N't1', --表名字 @role_name = N'cdec_role' --能够查询该表的角色,若是有则不建立,若是没有则建立
成功启用了该表之后,SQL Server会建立该表的数据捕获表:blog
当第一次启用表的时候,会建立两个代理做业,因此若是使用变动捕获,则须要启用代理,如下是第一次启用表变动产生的代理:部署
cdc.db_test_cdc_capture:是用于将变动的数据同步到咱们启用的变动表中,即:cdc.dbo_t1_CT这个表同步
cdc.db_test_cdc_cleanup:适用于定时清理cdc.dbo_t1_CT这个表这个表中的数据
咱们在t1表插入一条数据,进行测试。
INSERT INTO t1(name)VALUES('test1');
这个表则会记录一条数据
其中$operation这个字段表示新增的这行是怎么来的,值分别有下面这几种:
1:删除
2:增长
3:修改前数据
4:修改后数据
--禁用表变动捕获
USE db_test_cdc GO EXEC sys.sp_cdc_disable_table @source_schema = N'dbo', @source_name = N't1', @capture_instance = N'dbo_t1' GO
执行禁用表变动之后,其相应的表会被删除掉 以下:
--禁用数据库变动
USE db_test_cdc GO EXEC sys.sp_cdc_disable_db
禁用数据库表变动之后,全部有关变动捕获的讯息,均被清空;
-------结束---------
以上是有关变动捕获的简单部署,后续会继续更新有关变动捕获更详细的资料