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

 

禁用數據庫表變動之後,全部有關變動捕獲的訊息,均被清空;

 

-------結束---------

 

 

以上是有關變動捕獲的簡單部署,後續會繼續更新有關變動捕獲更詳細的資料

相關文章
相關標籤/搜索