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

SQL Server:sys.dm_db_index_usage_stats仅显示MSDB数据,如何恢复统计?

问题解答

是否是数据导入操作导致的问题?

是的,你提到的清空数据并从不同版本机器导入数据的操作就是主要原因,具体两点:

  • sys.dm_db_index_usage_stats是内存级的动态管理视图,数据仅存在于SQL Server实例的内存中,当数据库被还原、附加、离线再上线时,之前的统计数据会被彻底清除。
  • 新导入的数据库如果没有被实际访问(没有触发索引使用的查询、更新等操作),视图里不会生成新的统计——该视图只记录导入完成后,数据库对象被访问的情况。

如何让视图重新记录统计信息?

  • 等待正常业务访问:只要数据库有日常的CRUD操作(查询、插入、更新、删除)触发了索引的使用,SQL Server会自动在sys.dm_db_index_usage_stats中累积统计数据,无需额外配置。
  • 手动触发统计(测试或验证用):可以针对目标数据库的主要表执行简单查询,比如:
    -- 针对单表触发索引访问
    SELECT TOP 100 * FROM [你的数据库名].[dbo].[目标表名];
    -- 或者执行更新操作(如果允许)
    UPDATE [你的数据库名].[dbo].[目标表名] SET [某列] = [某列] WHERE [主键列] = 1;
    
    执行后再查询视图,就能看到对应的统计记录。
  • 注意事项:该视图的数据无法持久化,SQL Server重启、执行DBCC FREEPROCCACHE/DBCC FREESYSTEMCACHE('ALL')等命令都会清空统计,这是正常特性。

内容的提问来源于stack exchange,提问作者Pete Danes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 13:28:15