Sql Server之更改跟踪功能

1.更改跟踪(Change Tracking)介绍

更改跟踪是一种轻量型解决方案,它为应用程序提供了一种有效的更改跟踪机制。更改跟踪捕获更改了表行这一事实,但不会捕获更改的数据。 这样,应用程序就可以确定使用从用户表中直接获取的最新行数据更改的行。

2.启用更改跟踪(Change Tracking)

(1)启用更改跟踪限制
1)先启用数据库的更改跟踪,再启用各个表的更改跟踪
2)若要使用更改跟踪,必须将数据库兼容级别设为 90 或更高。 如果数据库的兼容级别低于 90,则可以配置更改跟踪。 但是,用于获取更改跟踪信息的 CHANGETABLE 函数将返回错误。
3)使用快照隔离是帮助确保所有更改跟踪信息保持一致的最简单方式。 因此,强烈建议将数据库的快照隔离设为 ON

(2)启用数据库更改跟踪(Change Tracking)
查询某个数据库是否开启更改跟踪(Change Tracking)功能

SELECT
DB_NAME(database_id) DataBaseName,is_auto_cleanup_on,retention_period,retention_period_units_desc
FROM sys.change_tracking_databases
WHERE DB_NAME(database_id)='数据库名称'

开启某个数据库的更改跟踪(Change Tracking)功能

ALTER DATABASE 数据库名称
SET CHANGE_TRACKING = ON --开启更改跟踪功能
(CHANGE_RETENTION = 30 DAYS, AUTO_CLEANUP = ON) --设置保持期与是否自动清除

(3)启用表更改跟踪(Change Tracking)
查询某个表是否开启更改跟踪(Change Tracking)功能

SELECT
OBJECT_NAME(object_id) TableName,is_track_columns_updated_on
FROM sys.change_tracking_tables
WHERE OBJECT_NAME(object_id)='表名'

开启某个表的更改跟踪(Change Tracking)功能

ALTER TABLE [schema].[表名]
ENABLE CHANGE_TRACKING --开启更改跟踪服务
WITH (TRACK_COLUMNS_UPDATED = ON) --开启跟踪已更新的列

3.禁用更改跟踪(Change Tracking)

注:必须首先为所有启用了更改跟踪的表禁用更改跟踪,然后才能禁用数据库的更改跟踪功能

(1)禁用表更改跟踪(Change Tracking)

ALTER TABLE [schema].[表名]  
DISABLE CHANGE_TRACKING;

(2)禁用数据库更改跟踪(Change Tracking)

ALTER DATABASE 数据库名称 
SET CHANGE_TRACKING = OFF

4.更改跟踪(Change Tracking)常用SQL语句

(1)查询当前更改跟踪版本号

SELECT CHANGE_TRACKING_CURRENT_VERSION ()
AS CURRENT_VERSION

(2)查询在数据库更改跟踪功能保持期内的最小更改跟踪版本号

SELECT CHANGE_TRACKING_MIN_VALID_VERSION
(OBJECT_ID('schema.表名')) AS MIN_VERSION

(3)使用Changes关键字查看更改信息

SELECT * -- SYS_CHANGE_VERSION,SYS_CHANGE_CREATION_VERSION,SYS_CHANGE_OPERATION,SYS_CHANGE_COLUMNS,SYS_CHANGE_CONTEXT,表主键字段名称
FROM CHANGETABLE(CHANGES schema.表名, 更改跟踪版本号) AS CT --只能查询大于更改跟踪版本号的数据变化信息

(4)返回哪些列被修改,1为真,0为假

SELECT 表主键名称,
CHANGE_TRACKING_IS_COLUMN_IN_MASK(
COLUMNPROPERTY(
OBJECT_ID('schema.表名'),'字段名1', 'ColumnId') ,
SYS_CHANGE_COLUMNS) '是否改变字段名1',
CHANGE_TRACKING_IS_COLUMN_IN_MASK(
COLUMNPROPERTY(
OBJECT_ID('schema.表名'),'字段名2', 'ColumnId') ,
SYS_CHANGE_COLUMNS) '字段名2',
CHANGE_TRACKING_IS_COLUMN_IN_MASK(
COLUMNPROPERTY(
OBJECT_ID('schema.表名'), '字段名3', 'ColumnId') ,
SYS_CHANGE_COLUMNS) '字段名3'
-- 可增加要查看的列
FROM CHANGETABLE(CHANGES 'schema.表名', 更改跟踪版本号) AS CT
WHERE SYS_CHANGE_OPERATION = 'U' -- U代表更新、I代表插入、D代表删除
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SQL Server审计是一项功能,它允许你跟踪和记录SQL Server数据库引擎实例或单独数据库中发生的事件。通过审计,你可以了解到谁在何时执行了什么操作。审计功能是在SQL Server 2008之后引入的,它基于扩展事件(Extended Events),因此具有较好的性能和灵活性。 要开始使用SQL Server审计,你需要创建一个实例级的"SQL Server Audit"对象。然后,你可以创建从属于该对象的"服务器审核规范"和"数据库审核规范",以定义要审计的具体内容。 创建审核规范时,你可以指定要审核的操作类型,比如DML操作(如INSERT、UPDATE、DELETE)以及结构修改操作。你可以通过SSMS(SQL Server Management Studio)或者使用相应的语句来创建审核规范。 审核数据可以输出到审核文件、Windows安全日志和应用程序日志,以供后续分析和审查。这样,你就可以轻松地跟踪和记录数据库引擎中发生的事件,以满足安全性和合规性要求。 更详细的信息,你可以参考和中提供的引用内容。对于创建数据库审核规范的具体语句,你可以参考中提供的引用内容。 总结来说,SQL Server审计是一项强大的功能,可以帮助你了解和审计数据库引擎中的事件。通过创建实例级的"SQL Server Audit"对象和相应的审核规范,你可以定义要审计的具体内容,并将审核数据输出到不同的日志中。这样,你就可以追踪和记录数据库操作,确保数据的安全性和合规性。 : SQL Server审计功能入门:SQL Server审核 (SQL Server Audit) : CREATE DATABASE AUDIT SPECIFICATION : Audit是SQL Server 2008之后才有的功能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java界第一深情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值