微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL 服务器 DMV动态管理视图未显示具有 2 个索引的表的最后用户更新信息

如何解决SQL 服务器 DMV动态管理视图未显示具有 2 个索引的表的最后用户更新信息

我正在使用以下 sql 服务器 DMV 来查明上次更新表的时间。

USE DB_NAME 
GO

SELECT
[database_name] = DB_NAME(DB_ID()),[table_name] = tbl.[name],ius.last_user_update,ius.user_updates,ius.last_user_seek,ius.last_user_scan,ius.last_user_lookup,ius.user_seeks,ius.user_scans,ius.user_lookups
FROM sys.dm_db_index_usage_stats ius
INNER JOIN sys.tables tbl
    ON (tbl.OBJECT_ID = ius.OBJECT_ID)
WHERE ius.database_id = DB_ID() -- current database
ORDER BY tbl.[name]

有 1 个表,上面有 2 个索引,并且该表已被我们的每日 ETL 刷新。上面的 DMV 显示了该特定表的 2 行,但它们的 last_user_update 列中都包含 NULL。我们没有做任何服务器重启/清除 DMV 缓存。同一张表位于我们的开发/生产环境中。奇怪的是,在 Dev 的前一天,DMV 显示了 last_user_update 值,但现在没有了。 Prod 中的 DMV 一直显示此表的空值。相同的 DMV 适用于其他表。

有谁知道我们如何获得这个特定表的 last_user_update 日期?谢谢!

编辑: 添加DMV查询结果如下:

database_name   table_name  last_user_update    user_updates    last_user_seek              last_user_scan          last_user_lookup    user_seeks  user_scans  user_lookups
DB_NAME         Emp         NULL                0               2021-04-27 07:10:46.820     NULL                    NULL                1           0           0
DB_NAME         Emp         NULL                0               2021-04-27 07:33:54.480     2021-04-27 07:10:38.063 NULL                4           3           0

编辑2: 这些表的 ETL:

  1. 删除表的索引
  2. 从应用程序数据库提取数据,将这些数据插入到相关表中
  3. 截断相关表格的空格。
  4. 将索引添加回相关表。

我们正在删除索引,因为这是一个数据仓库,我们每天都在重新捕获数据。

编辑 3: 找出问题所在。添加主键约束实际上会删除 last_update_date 的 DMV 数据。删除索引/重新创建索引不会。

感谢大家调查这个问题:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。