我的场景是这样的:我的数据库中有几个视图(SQL Server 2005)。这些视图是从整个组织的 Excel 中查询的。
我的目标是找出那些很久没有被任何人使用过的视图。
有没有办法计算自特定日期以来请求查看的次数?
谢谢阿维
我的场景是这样的:我的数据库中有几个视图(SQL Server 2005)。这些视图是从整个组织的 Excel 中查询的。
我的目标是找出那些很久没有被任何人使用过的视图。
有没有办法计算自特定日期以来请求查看的次数?
谢谢阿维
您可以使用以下查询来获取执行的一些查询。您可以在 dest.text 字段中放置“Like”运算符以检查视图。
SELECT deqs.last_execution_time AS [Time], dest.text AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.last_execution_time DES
我认为DMV 和 sysobjects 的组合可以告诉你这一点。希望这应该向您显示所有引用视图的查询、视图的名称、上次运行的时间等。
SELECT s2.text AS Query,
so.name AS ViewName,
creation_time,
last_execution_time,
execution_count
FROM sys.dm_exec_query_stats AS s1
CROSS APPLY sys.Dm_exec_sql_text(sql_handle) AS s2
INNER JOIN sys.objects so
ON so.object_id = s2.objectid
AND so.type = 'V'
我认为除非您 24/7 全天候运行跟踪,否则您将无法做到这一点。您可以打开审核以对其进行监控。但是,这将是一项艰巨的任务,因为必须通读日志。