SqlServer更改跟踪(ChangTracking)(三)

2015-07-24 10:16:01 · 作者: · 浏览: 9
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