更改跟踪

 
---配置更改跟踪及查询更改跟踪信息。
--更改跟踪捕获表的数据行更改这一行为,但不会捕获更改的具体数据。捕获的结果包含表的主键及相关的跟踪信息(例如更改的操作类型、更新操作影响的列等)。可以利用这个捕获的结果来确定表的最新更新,并可以关联原始来来获取最新的数据.

use master 
go
ALTER DATABASE TEST  SET CHANGE_TRACKING =ON|OFF ---对数据库启用或禁用 更改跟踪
go
ALTER DATABASE [Test] SET CHANGE_TRACKING (CHANGE_RETENTION = 7 DAYS|HOURS|MINUTES) ---数据保存期7小时(单位为:天、小时、分钟)
GO
ALTER DATABASE [Test] SET CHANGE_TRACKING (AUTO_CLEANUP = OFF|ON)---关闭或打开自动清除
go
USE Test 
GO
ALTER TABLE T_A ENABLE CHANGE_TRACKING WITH(TRACK_COLUMNS_UPDATED=ON|OFF)--启用或关闭在t_a表上的更改跟踪并跟踪已经更新的列
GO
ALTER TABLE T_A DISABLE CHANGE_TRACKING ---禁用对T_A表的更改跟踪
go
insert t_a select code,name,remarks from t_a where id=1
go
delete from t_a where id=13
go
update t_a set remarks='2266' where id=13
go

SELECT 
    CHANGE_TRACKING_CURRENT_VERSION(),/*
返回与上次提交的事务相关联的版本号。启用了更改跟踪的数据库具有一个版本计数器,在对启用了更改跟踪的表进行更改时,该计数器会随之递增。每个更改的行都有一个关联的版本号。可以在每次查询完成后,记录这个版本号,下次查询时,基于这个版本号查询,以获取后续的最新更改。*/
    CHANGE_TRACKING_MIN_VALID_VERSION(OBJECT_ID(N'dbo.t_a'));
    /*指定表可用的最低有效版本号。在第一次查询数据的时候,可以使用此函数得到查询更改信息的起始版本号;*/
GO
SELECT *
FROM CHANGETABLE(CHANGES dbo.t_a, 11) cg ---这里的11 指显示从12版本开始往后的所有 更改跟踪信息
    LEFT JOIN dbo.t_a  da
        ON da.id = cg.id;
--返回自指定版本起对表所做的所有更改的跟踪信息. 即列出自特定版本起进行的所有更改
select SYS_CHANGE_VERSION, SYS_CHANGE_OPERATION,
    SYS_CHANGE_COLUMNS, SYS_CHANGE_CONTEXT 
 from  changetable(changes t_a ,9)as a
 ---该查询返回所有行数据及其关联的版本。 即 返回数据初始同步的行
 SELECT e.[ID], e.code, e.name, e.remarks ,
    c.SYS_CHANGE_VERSION, c.SYS_CHANGE_CONTEXT
FROM t_a AS e
CROSS APPLY CHANGETABLE 
    (VERSION t_a, (id), (e.ID)) AS c;
---获取同步的所有已更改数据。此查询将更改跟踪信息与用户表联接,以便返回用户表信息。使用 LEFT OUTER JOIN 以便为删除的行返回行
 SELECT  c.ID, e.code,e.name,e.remarks,
    c.SYS_CHANGE_VERSION, c.SYS_CHANGE_OPERATION,
    c.SYS_CHANGE_COLUMNS, c.SYS_CHANGE_CONTEXT 
FROM CHANGETABLE (CHANGES t_a, 9) AS c
    LEFT OUTER JOIN t_a AS e
        ON e.ID = c.ID 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值