【问题标题】:Change tracking SQL Server更改跟踪 SQL Server
【发布时间】:2018-06-02 17:16:38
【问题描述】:

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

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

我也尝试过截断和插入操作。但是,看不到任何变化。

我们什么时候可以看到两列的不同值,请举例说明。

【问题讨论】:

    标签: sql-server change-tracking


    【解决方案1】:

    来自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 - 可用于表的更改跟踪信息的最低有效版本。

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

    例如,如果您的默认保留期为 2 天,则任何时候此线程唤醒时,它都会根据从现在起 2 天前提交的事务确定数据库的最大版本。您可以查询 sys.dm_tran_commit_table 以查找有关此的更多信息。 commit_ts 是我刚才在上面几行中谈到的版本。

    【讨论】:

      猜你喜欢
      • 2017-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      相关资源
      最近更新 更多