Sql Server之更改跟踪功能

news/2024/7/9 20:14:46 标签: 数据库, oracle, postgresql

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

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

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

(1)查询某个数据库是否开启更改跟踪(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)='数据库名称'

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

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

3.表启用更改跟踪(Change Tracking)

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

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

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

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

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 dbo.tj_test, 0) AS CT
WHERE SYS_CHANGE_OPERATION = 'U' -- U代表更新、I代表插入、D代表删除

http://www.niftyadmin.cn/n/5360535.html

相关文章

【Linux多线程】线程池

目录 线程池的概念 线程池的优点 线程池的应用场景 线程池示例 代码实现 线程池的概念 线程池是一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。 线程…

火柴人大逃亡

欢迎来到程序小院 火柴人大逃亡 玩法:左右两边火柴人,点击左边左边火柴人跳跃,点击右边右边跳跃, 上下快速移动道路,躲过障碍物,看你能坚持多久,快去火柴人大逃亡吧^^。开始游戏https://www.or…

本体(ontology)信息在工业4.0中的应用

信息技术中的本体与哲学的本体论是不同的,它代表了某个专业领域的基本概念,它们在智能制造和工业4.0 中具有不可或缺的作用,为了实现人与机器,机器与机器之间的确定性操作。一个标准化的,精确定义的本体服务是非常重要…

Linux网络状态查看与防火墙管理

网络状态查看 netstat [选项] Netstat是一款命令行工具,用于显示Linux系统中网络的状态信息,可以显示网络连接、路由表、连接的数据统计等信息。 使用 选项 -a:显示所有选项,包括监听和未监听的端口。 -t:仅显示tc…

【教程】谈一谈 IPA 上传到 App Store Connect 的几种方法

引言 在应用开发过程中,将应用程序上传到 App Store Connect 是一个关键的环节。本文将探讨几种常见的 IPA 文件上传方法,包括 Xcode、Application Loader、altool、Appuploader以及Transporter。通过本文的介绍和指导,读者将能够了解不同的…

Java项目:基于SSM框架实现的西安旅游管理系统(ssm+B/S架构+源码+数据库+毕业论文)

一、项目简介 本项目是一套ssm811基于SSM框架实现的西安旅游管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试&am…

语义分割:从早期探索到深度学习的突破

语义分割:从早期探索到深度学习的突破 语义分割的端倪:从早期探索到深度学习的突破引言早期技术:图像处理与模式识别边缘检测区域生长图割(Graph Cut)聚类方法 深度学习的兴起:CNN革命2012年 AlexNet的突破全卷积网络(…

Day06-Linux下目录命令讲解及重要文件讲解

Day06-Linux下目录命令讲解及重要文件讲解 1. Linux目录文件1.1 Linux系统目录结构介绍1.1.1 Linux与Windows目录结构对比 1.2 重要的Linux配置文件介绍1.2.1 /etc系统初始化及设置相关重要文件1.2.2 /usr目录的重要知识介绍------应用程序目录1.2.3 /var目录下的路径知识-----…