← Back to list

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

image.png

使用

数据库版本: 每次变动都会+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: 同步版本(返回大于此版本的变动记录) 结果示例: 表的变动记录

参考

关于更改跟踪 (SQL Server)