8

我们有一个通过 SQL Server 2008 在共享主机上运行的数据库。由于性能限制,我们现在处于需要移动数据库以及网站的位置。我们在数据库上使用更改跟踪,以便客户端可以使用同步框架进行同步。

我的问题是:更改跟踪表是否以某种方式存储在数据库中,这意味着当重新定位时,它将保持原位?

我目前正在学习 SQL Server,更改跟踪的细节仍然暗示着我。从概念上讲,我并不真正了解更改跟踪表的“位置”。

4

3 回答 3

4

Commit 表是一个隐藏的内部表,命名sys.syscommittab只能由管理员直接访问,并为参与 Change Tracking 的表的每次修改的每个事务存储一行。

相关数据存储在单独的系统表中,这些表是在对用户表启用更改跟踪时创建的。

通过在表级别启用更改跟踪创建的内部表名为sys.change_tracking_[object id],其中 [object id] 是目标表的 objectID。

于 2010-02-11T10:58:11.240 回答
2

考虑是否将其发布为答案,因为我通常不喜欢提供链接,但在这种情况下,我想总结一些要点,因此不能很好地作为评论!

这篇文章非常值得一读,其中详细介绍了变更跟踪和(以及变更数据捕获)的工作原理。

对于更改跟踪,您可以使用以下方法找到用于跟踪更改的内部表:

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

重要的报价是:

该表是所谓的内部表,无法控制其名称或存储位置。

于 2010-02-11T11:16:30.323 回答
1

这里看起来,更改跟踪是与您的表在同一数据库目录中的通用表。因此,您对数据库所做的任何移动都应随身携带更改表。

我会先调查数据库的架构,然后使用 MSDN 页面。

于 2010-02-11T11:00:15.357 回答