更改跟踪SQL Server

时间:2018-04-09 10:36:50

标签: sql-server change-tracking

sys.change_tacking_tables中特定的基于更改跟踪的表的begin_version和min_valid_version列之间的主要区别是什么?

我在数据库中看到每个表(1000多个表)的两列相同的值。

我也试过了truncate和insert操作。但是,无法看到任何变化。

我们何时才能看到两个列的不同值,请举例说明。

1 个答案:

答案 0 :(得分:0)

来自https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/change-tracking-catalog-views-sys-change-tracking-tables?view=sql-server-2017

begin_version - 为表开始更改跟踪时数据库的版本。此版本通常指示何时启用更改跟踪,但如果表被截断,则会重置此值。

在数据库级别启用更改跟踪时,此时的数据库版本将被视为1.在此数据库上提交的每个事务都会按顺序增加版本。因此,对应于每个表的begin_version基本上是在特定表上启用change_tracking时数据库的版本。

min_valid_version - 表格可用的更改跟踪信息的最低有效版本。

根据您为更改跟踪自动清理配置的保留期,每次autocleanup线程唤醒时,min_valid_version都会更新。更改跟踪自动清理线程在后台每30分钟唤醒一次,并为启用了更改跟踪的所有数据库更新无效清理版本。

例如,如果您的保留期是默认的2天,则此线程唤醒时,它将从2天前提交的事务中确定数据库的最大版本。您可以查询sys.dm_tran_commit_table以查找有关此内容的更多信息。 commit_ts是我刚刚在上面提到的版本。