我们有一个通过SQL Server 2008在共享主机上运行的数据库。由于性能的限制,我们现在处于这样的位置,我们必须移动数据库以及一个网站。我们对数据库使用更改跟踪,以便客户端可以使用同步框架进行同步。SQL Server 2008:更改跟踪表存储在哪里?
我的问题是:存储在数据库中的更改跟踪表是否意味着在重定位时它将保持原状?
我目前正在学习SQL Server的过程中,更好的跟踪点仍然暗示着我。从概念上讲,我不太了解变更跟踪表的位置。
我们有一个通过SQL Server 2008在共享主机上运行的数据库。由于性能的限制,我们现在处于这样的位置,我们必须移动数据库以及一个网站。我们对数据库使用更改跟踪,以便客户端可以使用同步框架进行同步。SQL Server 2008:更改跟踪表存储在哪里?
我的问题是:存储在数据库中的更改跟踪表是否意味着在重定位时它将保持原状?
我目前正在学习SQL Server的过程中,更好的跟踪点仍然暗示着我。从概念上讲,我不太了解变更跟踪表的位置。
Commit表是一个隐藏的内部表,名为sys.syscommittab
,只能由管理员直接访问,并为每次修改时为每个事务存储一行,以便参与更改跟踪。
相关数据存储在单独的系统表中,这是在用户表上启用更改跟踪时创建的。
通过在表级启用更改跟踪而创建的内部表名为sys.change_tracking_[object id
],其中[object id]是目标表的对象ID。
感谢您的回复。你将不得不原谅我的无知,但sys.syscommittab被隐藏,这是否意味着它与数据库是分开的,并且不会包含在任何备份中? 最坏的猜测情景是,我们移动数据库并丢失更改跟踪信息。 – Sergio 2010-02-11 11:14:58
@Sergio:有趣的问题,不确定。我会挖一个... – 2010-02-11 11:52:53
考虑是否发布这个答案,因为我通常不喜欢只是给出了一个链接,但在这种情况下,我想总结一些要点,所以做得不好评论!
This文章非常值得一读,它提供了有关更改跟踪和(和更改数据捕获)工作原理的大量细节。
对于更改跟踪,你可以找到内部表正在使用使用跟踪更改:
SELECT [name] FROM sys.internal_tables
WHERE [internal_type_desc] = 'CHANGE_TRACKING';
重要的报价是:
表是一般所谓的 内部表,并且对其名称或存储的 没有控制权。
段落为赢:D – 2010-02-11 10:56:44
嘿,谢谢。我确定我把他们放进去,但是哦! – Sergio 2010-02-11 11:01:25