You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Microsoft SQL Server中查询近24小时数据被修改的表?

如何查询SQL Server中近24小时被修改的数据表(无手动更新时间记录)

可以通过SQL Server内置的动态管理视图(DMV)实现,无需手动维护更新时间字段。SQL Server会自动跟踪表的修改操作统计,以下是具体方案:

核心查询语句

SELECT 
    SCHEMA_NAME(t.schema_id) AS SchemaName,
    t.name AS TableName,
    COALESCE(MAX(ius.last_user_update), MAX(ps.last_modified_date)) AS LastModifiedTime
FROM 
    sys.tables t
LEFT JOIN 
    sys.dm_db_index_usage_stats ius 
    ON t.object_id = ius.object_id
    AND ius.database_id = DB_ID()
LEFT JOIN 
    sys.dm_db_partition_stats ps
    ON t.object_id = ps.object_id
    AND ps.index_id IN (0, 1) -- 堆表(0)或聚集索引表(1)
WHERE 
    (ius.last_user_update >= DATEADD(HOUR, -24, GETDATE())
     OR ps.last_modified_date >= DATEADD(HOUR, -24, GETDATE()))
GROUP BY 
    SCHEMA_NAME(t.schema_id), t.name
ORDER BY 
    LastModifiedTime DESC;

关键说明

  • sys.dm_db_index_usage_stats:记录表上索引的用户操作时间(INSERT/UPDATE/DELETE),适用于带索引的表。但SQL Server服务重启后,该视图的数据会被重置。
  • sys.dm_db_partition_stats:针对堆表(无聚集索引)或聚集索引表,last_modified_date字段会记录最后一次数据修改的时间,弥补堆表在sys.dm_db_index_usage_stats中无记录的问题。
  • 局限性:如果服务刚重启,之前的修改统计会丢失;只读数据库不会更新这些统计信息;系统表的修改默认不包含在结果中,如需查询可调整sys.tables的过滤条件。

内容的提问来源于stack exchange,提问作者M.K. Safi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:30:01