天天看點

SQL Server 更改跟蹤(Chang Tracking)監控表資料一.本文所涉及的内容(Contents)二.背景(Contexts)三.主要差別與對比(Compare)四.實作監控表資料步驟(Process)五.參考文獻(References)

<a href="#_labelContents">本文所涉及的内容(Contents)</a>

<a href="#_labelContexts">背景(Contexts)</a>

<a href="#_labelCompare">主要差別與對比(Compare)</a>

<a href="#_labelProcess">實作監控表資料步驟(Process)</a>

<a href="#_labelReferences">參考文獻(References)</a>

1. SQL Server 2008 引入了兩項跟蹤功能:變更資料捕獲和更改跟蹤,以使應用程式能夠确定對資料庫中的使用者表所做的 DML 更改(插入、更新和删除操作);

3. 變更資料捕獲使用異步程序捕獲,此程序讀取事務日志;更改跟蹤是與DML操作同步的,不需要讀取事務日志;

4. 變更資料捕獲包含了變更的曆史記錄,更改跟蹤隻儲存行,但不會捕獲更改的資料;

(二) 開啟資料庫更改跟蹤Chang Tracking,通過下面的SQL腳本可以查詢開啟了更改跟蹤的資料庫清單;

SQL Server 更改跟蹤(Chang Tracking)監控表資料一.本文所涉及的内容(Contents)二.背景(Contexts)三.主要差別與對比(Compare)四.實作監控表資料步驟(Process)五.參考文獻(References)

(Figure1:檢視資料庫是否啟用更改跟蹤)

(三) 開啟資料庫更改跟蹤Chang Tracking,通過下面的SQL腳本可以查詢開啟了更改跟蹤的資料庫清單;

SQL Server 更改跟蹤(Chang Tracking)監控表資料一.本文所涉及的内容(Contents)二.背景(Contexts)三.主要差別與對比(Compare)四.實作監控表資料步驟(Process)五.參考文獻(References)

(Figure2:檢視表是否啟用更改跟蹤)

(四) 測試對Department表進行DML操作:分兩次把資料插入到表,并使用下面的SQL腳本檢視變更跟蹤資訊,從中可以發現,兩次不同的插入會生成兩個版本,這可以證明變更跟蹤是跟DML操作是同步的;

SQL Server 更改跟蹤(Chang Tracking)監控表資料一.本文所涉及的内容(Contents)二.背景(Contexts)三.主要差別與對比(Compare)四.實作監控表資料步驟(Process)五.參考文獻(References)

(Figure3:更改跟蹤資訊)

(五) 繼續測試對Department表進行DML操作:做一次Update操作、做一次Delete操作;

SQL Server 更改跟蹤(Chang Tracking)監控表資料一.本文所涉及的内容(Contents)二.背景(Contexts)三.主要差別與對比(Compare)四.實作監控表資料步驟(Process)五.參考文獻(References)

(Figure4:更改跟蹤資訊)

(六) 檢視列變更說明;

SQL Server 更改跟蹤(Chang Tracking)監控表資料一.本文所涉及的内容(Contents)二.背景(Contexts)三.主要差別與對比(Compare)四.實作監控表資料步驟(Process)五.參考文獻(References)

(Figure5:列變更說明)

(七) 使用Version關鍵字檢視更改資訊;

SQL Server 更改跟蹤(Chang Tracking)監控表資料一.本文所涉及的内容(Contents)二.背景(Contexts)三.主要差別與對比(Compare)四.實作監控表資料步驟(Process)五.參考文獻(References)

(Figure6:Version關鍵字檢視更改資訊)

(八) 通過在外部應用程式中的上下文資訊判斷這個DML是由哪個應用産生的;

SQL Server 更改跟蹤(Chang Tracking)監控表資料一.本文所涉及的内容(Contents)二.背景(Contexts)三.主要差別與對比(Compare)四.實作監控表資料步驟(Process)五.參考文獻(References)

(Figure7:上下文資訊)

(九) 擷取更改跟蹤版本2之後的表資料;

SQL Server 更改跟蹤(Chang Tracking)監控表資料一.本文所涉及的内容(Contents)二.背景(Contexts)三.主要差別與對比(Compare)四.實作監控表資料步驟(Process)五.參考文獻(References)

(Figure8:更改表記錄)

(十) 總結:在更改跟蹤的記錄中包括了表Department 的唯一編号,還有DML的操作符字段SYS_CHANGE_OPERATION,枚舉這些值(I=Insert、U=Update、D=Delete),還有DML操作的版本号:SYS_CHANGE_VERSION,它是每進行一次DML,都會遞增一個版本号,是以你可以針對I=Insert、U=Update、D=Delete不同的類型加上版本号過濾,就可以找到那些資料進行了更新;

<a href="http://www.cnblogs.com/downmoon/archive/2012/04/10/2439462.html">SQL Server 2008中新增的變更資料捕獲(CDC)和更改跟蹤</a>

<a href="http://msdn.microsoft.com/zh-cn/library/bb933994(v=sql.100).aspx">跟蹤資料更改</a>

<a href="http://bbs.csdn.net/topics/280034032">Oracle 一樣能夠Flashback</a>