1、開啓cdc命令:
use AdventureWorks
go
Execute sys.sp_cdc_enable_db;
如果報錯,先執行以下語句:
ALTER AUTHORIZATION ON DATABASE::[AdventureWorks] TO [sa]
2、對錶啓動cdc
Exec sys.sp_cdc_enable_table @source_schema='HumanResources',
@source_name='Employee',@role_name = NULL
注:@source_schema是目標表的schema,@source_name是目標表的名稱,@role_name是執行cdc的角色名稱。
3、查看所有標記cdc的表
use databasename;
然後通過sys.tables中的is_tracked_by_cdc來查詢是否開啓cdc功能。
開啓cdc之後,數據庫下的系統表會多出對應的cdc.xxxxxx_CT表。sql server代理中也會對應多出兩個Job,如圖:
4、cdc.xxxxx_CT表中的字段
$start_len 序號
—$operator 操作類型,1表示delete,2表示insert,3表示update的舊值,4表示update的新值。
此外原始表中的字段都會在cdc.xxxxx_CT表中出現。
5、具體使用幫助文檔如下:
https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008/cc645858(v%3dsql.100)
6、CDC開啓可能帶來的問題(事務日誌暴漲,日誌無法收縮)
cdc開啓之後,對原始表的修改,事務日誌狀態會被標記爲ACTIVE_TRANSACTION,當capture這個job修改完之後會將狀態修改爲NOTHING,查看數據庫的事務日誌狀態的sql語句是:
SELECT log_reuse_wait, log_reuse_wait_desc FROM SYS.databases;
查看數據庫的事務日誌的語句是:
select * from sys.fn_dblog(null, null);
注:事務日誌的相關信息查看msdn: