SQL Server中的变动捕获技术--简单部署

 

------准备------数据库

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

 

禁用数据库表变动之后,全部有关变动捕获的讯息,均被清空;

 

-------结束---------

 

 

以上是有关变动捕获的简单部署,后续会继续更新有关变动捕获更详细的资料

相关文章
相关标签/搜索