指示表中写入的最新事件的时间戳[重复]

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 无证记录之一中可用系统表。

谢谢。

【问题讨论】:

大概INSERTs 和UPDATEs 被认为是写,你也考虑DELETEs 吗?...TRUNCATEs 呢? 【参考方案1】:

如果它像您想要的高水位线,那么一个选项可能是读取事务日志。这不是直截了当的,因为日志并不打算用于这些目的。您还必须考虑数据库的恢复模式以及清空日志的频率。

需要一个轮询解决方案。即,一个预定的作业,它读取将相关信息抓取到您自己的表中的事务日志。下面的文章可以作为使用 fn_dblog() 读取事务日志的起点。

https://www.mssqltips.com/sqlservertip/3076/how-to-read-the-sql-server-database-transaction-log/

【讨论】:

以上是关于指示表中写入的最新事件的时间戳[重复]的主要内容,如果未能解决你的问题,请参考以下文章

spark append 如何保证原子性

我需要帮助找出这个 oracle 数据库时间戳 [重复]

Spring/Hibernate - 将当前时间戳写入数据库 [重复]

根据每个唯一 ID 的最新时间戳过滤数据帧 [重复]

mysql选择组中的最新时间戳

具有相同时间戳但测量值不同的 InfluxDB 写入点