更改跟踪删除与插入和更新

Change Tracking Delete vs Insert and Update

我正在开发一个集中记录所有数据操作操作的系统。 目前已应用 SQL Server Change Tracking,但它跟踪的数据存在问题。 例如。如果我在 TableX 中插入一行,更新同一行然后删除它,似乎只记录了删除操作。有谁知道怎么查看之前的操作吗?

DECLARE 
@synchronization_version bigint,
@last_synchronization_version bigint;;

-- Obtain the current synchronization version. This will be used next time that changes are obtained.  
SET @synchronization_version = CHANGE_TRACKING_CURRENT_VERSION();  
  
-- Obtain initial data set.  
SELECT T.* 
FROM TableX AS T; 

SELECT DTC.commit_time, CT.*, T.* 
FROM TableX AS T 
RIGHT OUTER JOIN CHANGETABLE(CHANGES TableX, @last_synchronization_version) AS CT ON T.fldId = CT.fldId 
JOIN sys.dm_tran_commit_table DTC ON CT.sys_change_version = DTC.commit_ts; 

正如@AlwaysLearning 所指出的那样,解决方案是使用变更数据捕获 (CDC) (Microsoft Docs) 而不是变更跟踪 (CT)。