SELECT sqlserver_start_time FROM sys.dm_os_sys_info
-- 查看表的统计信息
SELECT TableName = object_name(s.object_id),
Reads = SUM(user_seeks + user_scans + user_lookups), Writes = SUM(user_updates)
FROM sys.dm_db_index_usage_stats AS s
INNER JOIN sys.indexes AS i
ON s.object_id = i.object_id
AND i.index_id = s.index_id
WHERE objectproperty(s.object_id,'IsUserTable') = 1
GROUP BY object_name(s.object_id)
ORDER BY writes DESC
只有当您确定服务器在您打算检查的时间范围内没有重新启动时,这才会给您正确的估计。
--检查服务器最后一次重启的时间
-- 查看表的统计信息
参考资料:https ://stackoverflow.com/questions/1575676/how-to-find-out-sql-server-tables-read-write-statistics
我的理解是,这只有通过从
sys.dm_db_index_usage_stats
SQL Server 重启之间的“收集”数据才能实现。MS Systems Center Ops Manager 具有为您收集此数据的机制,但这超出了 SQL Server 本身的范围。您也许可以查看“打开”SQL Server 管理数据仓库,它可以充当此类数据的收集机制。
就我个人而言,我每天收集索引使用情况,用于驱动自定义 I/O 统计仪表板,该仪表板是“SQL Health”Web 应用程序的一部分。我只是在 SSIS 中运行一个 ETL 例程来从中获取数据
sys.dm_db_index_usage_stats
并创建一个关于使用情况、I/O 近似值、未使用的索引等的运行评论。最重要的是,没有针对每月使用情况的内置视图,您必须利用那里的内容并创建它。