CDC--Demo

--CDC通过对事务日志的异步读取,记录DML操作的发生时间、
--类型和实际影响的数据变化,然后将这些数据记录到启用
--CDC时自动创建的表中。通过cdc相关的存储过程,可以获
--取详细的数据变化情况。由于数据变化是异步读取的,因
--此对整体性能的影响不大,远小于通过Trigger实现的数据
--变化记录。

--对应未引发数据变化的更新操作,不会被记录到变更表中。

--CDC和复制代理使用同样的日志读取器,在捕获数据变更时有一定延迟,即使在简单回复模式下,未被读取的日志仍无法截断
?

--CDC捕获所得数据默认保存三天,以避免频繁变更操作导致捕获表变得臃肿,CDC使用JOB来清理过期数据。
--===================================================
--创建测试数据库
CREATE DATABASE DemoDB
--===================================================
--检查当前数据库是否启用CDC
--is_cdc_enabled=1:未启用,is_cdc_enabled=1:已启用
USE DemoDB
GO
SELECT D.is_cdc_enabled FROM sys.databases D
WHERE D.database_id=DB_ID()
---===================================================
--启用当前数据库CDC功能
EXEC sp_cdc_enable_db

--====================================================
--创建测试表TB1

CREATE TABLE TB1
(
ID INT IDENTITY(1,1) PRIMARY KEY,
C1 NVARCHAR(200)
)
--====================================================
--检查测试表是否启用CDC
--is_tracked_by_cdc=1:未启用,is_tracked_by_cdc=1:已启用
SELECT T.is_tracked_by_cdc FROM sys.tables T
WHERE T.name=N‘TB1‘


--=====================================================
--启用CDC,要求表有主键或指定唯一索引
--在第一次启动表后会创建两个作业
--作业 ‘cdc.DemoDB_capture‘ 已成功启动。
--作业 ‘cdc.DemoDB_cleanup‘ 已成功启动。
EXEC sys.sp_cdc_enable_table
@source_schema = ‘dbo‘,
@source_name = ‘TB1‘,
@role_name = NULL,
@capture_instance = NULL,
@supports_net_changes = 1,
@index_name = NULL,
@captured_column_list = NULL,
@filegroup_name = default

--=====================================================
--修改表中数据测试
INSERT INTO TB1(C1)VALUES(N‘123‘)
UPDATE TB1 SET C1=N‘456‘ WHERE C1=N‘123‘
DELETE FROM TB1 WHERE C1=N‘456‘

-------------------------------------------------------
--查看捕获的记录,变更记录表名:cdc.[TableName]_CT
--__$operation列对应操作类型:
--1=delete,
--2=insert,
--3=update(旧值),    
--4=update(新值)。

SELECT * FROM cdc.dbo_TB1_CT

 

--========================================================
--禁用数据捕获
EXEC sys.sp_cdc_disable_table
@source_schema = N‘dbo‘,
@source_name   = N‘TB1‘


--========================================================
--禁用数据捕获
EXEC sys.sp_cdc_disable_db

 
--================================================
参考:http://technet.microsoft.com/zh-CN/library/bb522475(v=sql.105)

CDC--Demo

上一篇:Ajax学习


下一篇:Transcation And Lock--两种方式实现可重复读