指示表中写入的最新事件的时间戳[重复]
Posted
技术标签:
【中文标题】指示表中写入的最新事件的时间戳[重复]【英文标题】:Timestamp to indicate the latest event writing in a table [duplicate] 【发布时间】:2022-01-06 14:44:25 【问题描述】:我想知道是否有任何方法可以找出最新事件何时写入 SQL Server 中的表。
假设表没有 created_at/updated_at 列,并且表上未启用 CDC 和更改捕获。
我不想从这种方法中流出数据;我知道我可以使用 CDC 或 CT 来执行此操作,但我正在尝试找到一种方法来检查表 X 是否处于活动状态并且是否插入/更新仅用于监视目的。我不想要正在写入的实际数据,我只想要一个时间戳,表明该表受到插入或更新的影响。
我一直在检查 sys.tables 并且发现了诸如 create_date 和 modify_date 之类的列,但它与表的存在和架构更改有关,而不是基础数据,但它让我希望它可能在 SQL Server 无证记录之一中可用系统表。
谢谢。
【问题讨论】:
大概INSERT
s 和UPDATE
s 被认为是写,你也考虑DELETE
s 吗?...TRUNCATE
s 呢?
【参考方案1】:
如果它像您想要的高水位线,那么一个选项可能是读取事务日志。这不是直截了当的,因为日志并不打算用于这些目的。您还必须考虑数据库的恢复模式以及清空日志的频率。
需要一个轮询解决方案。即,一个预定的作业,它读取将相关信息抓取到您自己的表中的事务日志。下面的文章可以作为使用 fn_dblog() 读取事务日志的起点。
https://www.mssqltips.com/sqlservertip/3076/how-to-read-the-sql-server-database-transaction-log/
【讨论】:
以上是关于指示表中写入的最新事件的时间戳[重复]的主要内容,如果未能解决你的问题,请参考以下文章