我想知道是否有任何方法可以找出最近的事件何时写入Server中的表。
假设表没有已创建的_at/updated_at列,并且在表上不启用CDC和Capture。
我不想将数据从这种方法中流出来;我知道我可以使用CDC或CT来这样做,但我正在试图找到一种方法来检查表X是否处于活动状态,并且只有用于监视目的的插入/更新。我不想要写入的实际数据,我只想要一个时间戳,表示表受到了insert或update的影响。
我一直在检查sys.tables,我发现了create_date和modify_date这样的列,但是它与表的存在和模式更改有关,而不是底层数据,但它给了我希望,它可能在Server的一个无文档系统表中可用。
谢谢。
发布于 2021-11-30 09:31:59
如果它是一个高水印您想要,那么一个选项可能是读取事务日志。这不是直接前进,因为日志不打算用于这些目的。您还必须考虑数据库的恢复模型以及清空日志的频率。
将需要一个轮询解决方案。也就是说,一个计划好的作业,它读取事务日志,将相关信息获取到您自己的表中。下面的文章可以作为使用fn_dblog()读取事务日志的起点。
https://www.mssqltips.com/sqlservertip/3076/how-to-read-the-sql-server-database-transaction-log/
https://dba.stackexchange.com/questions/303273
复制相似问题