o].[TargetTestTab] K ON D.id=K.id
WHERE SYS_CHANGE_OPERATION = 'U'
--delete :
DELETE FROM [dbo].[TargetTestTab]
WHERE id IN(
SELECT id FROM CHANGETABLE(CHANGES dbo.TestTab,3) AS T
WHERE SYS_CHANGE_OPERATION = 'D'
)
转移数据前,先查看当前的版本号 CHANGE_TRACKING_CURRENT_VERSION() ,例如500 。而上面的操作中,版本号为3,这批数据相应更改完成后,下次从版本号500开始。当然可能有误差,因为在操作这批数据时,当前可能有其他操作,版本号也在累计。
?
建议使用快照隔离级别,保证事务的一致性:
?
ALTER DATABASE [MyDatabase] SET ALLOW_SNAPSHOT_ISOLATION ON;
最后禁用更改跟踪:
?
--对表禁用
ALTER TABLE [dbo].[TestTab] DISABLE CHANGE_TRACKING
GO
--对数据库禁用
ALTER DATABASE [MyDatabase] SET CHANGE_TRACKING = OFF
GO