【问题标题】: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 呢?

标签: sql-server


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 2011-06-09
    相关资源
    最近更新 更多