熱線電話:13121318867

登錄
首頁精彩閱讀SQL Server 之 - 變更追蹤 2?
SQL Server 之 - 變更追蹤 2?
2014-12-04
收藏

SQL Server 之 - 變更追蹤 2

正如前面文章說道的,SQLServer 2008提供了兩種實現變更追蹤的功能,本部分主要討論的是Change Tracking功能。

激活ChangeTracking

我們可以通過如下的步驟來激活和使用ChangeTracking功能:

1. 在數據庫級別激活Change Tracking

使用下面的語句在數據庫上激活該功能(或者在SSMS的屬性彈出框中激活),它的兩個參數分別表示變更信息的存活時間以及是否激活自動清除變更信息任務:

2. 在需要的表上激活Change Tracking

我們需要在每個想追蹤變更的表上執行激活(需要注意的是,表必須具有主鍵才可以使用變更追蹤功能),可以使用如下的語句或使用表屬性彈出框:

其中參數TRACK_COLUMNS_UPDATED默認為False,因為維護列更新信息需要額外的存儲開銷。

3. 理解Change Tracking帶來的開銷

開啟了Change Tracking會對數據庫操作產生一些影響,我們可以從管理操作、DML操作及存儲方面來查看它們具體的影響:

  1. 管理操作

    

  1. DML操作

  2. 存儲

使用ChangeTracking

在激活了該功能之后就到了使用它的時候了,在激活了該功能的數據庫上會有一個版本計數器,然后每當在激活了變更追蹤的表上執行DML操作的時候都會產生一個新的Version號與之關聯,在某種程度上變更追蹤的版本號與rowversion數據類型有些相似。

現在我們可以很容易的想象如何使用變更追蹤的:

  1. 首先應用程序從數據庫做一次初始數據的加載

  2. 然后獲取當時的Version號并記錄一下以作為下次數據抽取的起始點

  3. 然后當下次應用程序需要從數據庫做增量數據抽取的時候,提供上次記錄下來的Version號并僅僅加載新的改動

  4. 如果很不幸的,應用程序在上次增量完成之后到下次增量抽取之間變動信息被清除了,那么應用程序不得不重新做一次全數據加載以防止數據不一致

數據庫提供了一下的函數來實現上面提到的功能:

1.      CHANGE_TRACKING_CURRENT_VERSION()

獲取當下最新的變更的Version

2.      CHANGETABLE(CHANGES…)

該行集函數返回變更信息,它接受表明及Version號作為參數,然后從內部追蹤變更信息的表中為該用戶表返回從提供了Version號之后發生的所有變更信息

3.      CHANGE_TRACKING_MIN_VALID_VERSION()

該函數需要一個表的object_id,然后返回當前數據庫中最小的有效Version號。應用程序在每次做增量抽取之前,應該判斷上次加載的Version號是否小于當前有效的Version號,如果是的話意味著有些變更信息因為某些原因已經被清除掉了,這時候必須做一次全數據加載

SQL

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢