------準備------數據庫
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
禁用數據庫表變動之後,全部有關變動捕獲的訊息,均被清空;
-------結束---------
以上是有關變動捕獲的簡單部署,後續會繼續更新有關變動捕獲更詳細的資料