2010-02-11 111 views
8

我們有一個通過SQL Server 2008在共享主機上運行的數據庫。由於性能的限制,我們現在處於這樣的位置,我們必須移動數據庫以及一個網站。我們對數據庫使用更改跟蹤,以便客戶端可以使用同步框架進行同步。SQL Server 2008:更改跟蹤表存儲在哪裏?

我的問題是:存儲在數據庫中的更改跟蹤表是否意味着在重定位時它將保持原狀?

我目前正在學習SQL Server的過程中,更好的跟蹤點仍然暗示着我。從概念上講,我不太瞭解變更跟蹤表的位置。

+0

段落爲贏:D – 2010-02-11 10:56:44

+0

嘿,謝謝。我確定我把他們放進去,但是哦! – Sergio 2010-02-11 11:01:25

回答

4

Commit表是一個隱藏的內部表,名爲sys.syscommittab,只能由管理員直接訪問,併爲每次修改時爲每個事務存儲一行,以便參與更改跟蹤。

相關數據存儲在單獨的系統表中,這是在用戶表上啓用更改跟蹤時創建的。

通過在表級啓用更改跟蹤而創建的內部表名爲sys.change_tracking_[object id],其中[object id]是目標表的對象ID。

+0

感謝您的回覆。你將不得不原諒我的無知,但sys.syscommittab被隱藏,這是否意味着它與數據庫是分開的,並且不會包含在任何備份中? 最壞的猜測情景是,我們移動數據庫並丟失更改跟蹤信息。 – Sergio 2010-02-11 11:14:58

+0

@Sergio:有趣的問題,不確定。我會挖一個... – 2010-02-11 11:52:53

1

here看起來像更改跟蹤是與表格相同的數據庫目錄中的通用表。所以你對數據庫的任何移動都應該帶着你的變化表。

我會先調查數據庫的架構,然後使用MSDN頁面。

+0

@Hassan Syed:不幸的是,我不認爲這是正確的 – 2010-02-11 11:05:22

+0

感謝您的文檔鏈接。現在閱讀它 – Sergio 2010-02-11 11:15:31

1

考慮是否發佈這個答案,因爲我通常不喜歡只是給出了一個鏈接,但在這種情況下,我想總結一些要點,所以做得不好評論!

This文章非常值得一讀,它提供了有關更改跟蹤和(和更改數據捕獲)工作原理的大量細節。

對於更改跟蹤,你可以找到內部表正在使用使用跟蹤更改:

SELECT [name] FROM sys.internal_tables 
    WHERE [internal_type_desc] = 'CHANGE_TRACKING'; 

重要的報價是:

表是一般所謂的 內部表,並且對其名稱或存儲的 沒有控制權。