sqlserver 数据变更跟踪
Published on: | Views: 86开启与停用
数据库开启与停用
开启
ALTER DATABASE $DB_NAME
SET CHANGE_TRACKING = ON
(CHANGE_RETENTION = 7 DAYS, AUTO_CLEANUP = ON)
$DB_NAME: 数据库名称 CHANGE_RETENTION: 变更保留天数 AUTO_CLEANUP: 过期数据是否自动清理,关闭后过期也不会清理
停用
ALTER DATABASE $DB_NAME
SET CHANGE_TRACKING = OFF
表开启与停用
ALTER TABLE $TABLE_NAME
ENABLE CHANGE_TRACKING
WITH (TRACK_COLUMNS_UPDATED = ON)
当 TRACK_COLUMNS_UPDATED 选项设为 ON 时, SQL Server 数据库引擎 会将有关哪些列已更新的额外信息存储到内部更改跟踪表中。 列跟踪使应用程序可以只同步那些已更新的列。 这可以提高效率和性能。 但是,由于保留列跟踪信息增加了一些额外的存储开销,因而默认情况下此选项设为 OFF。
停用
ALTER TABLE $TABLE_NAME
DISABLE CHANGE_TRACKING;
管理
查看开启了变化跟踪的表
select * from sys.change_tracking_tables
使用
数据库版本: 每次变动都会+1 同步版本:应用同步数据后,记录的数据库版本
获取当前数据库版本
select CHANGE_TRACKING_CURRENT_VERSION();
获取表的最低有效版本(如果同步版本低于最低有效版本,需要全量同步数据)
select CHANGE_TRACKING_MIN_VALID_VERSION(object_id('table_name'));
获取表的变动记录:
SELECT * FROM CHANGETABLE(CHANGES table_name, sync_version) AS CT;
table_name: 表名
sync_version: 同步版本(返回大于此版本的变动记录)
结果示例: