sql server cdc

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:

https://docs.microsoft.com/zh-cn/sql/relational-databases/logs/the-transaction-log-sql-server?view=sql-server-2017

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章