SQL Server:确定实际使用的视图

时间:2017-12-01 07:32:29

标签: sql-server

我试图找出在一个非常大的数据库上实际使用了哪些视图,这些视图有数千个视图,其中大部分可能已经过时。在几次涉及扩展事件的不成功尝试之后,我得出的结论是,最好的(在可执行性和低性能影响方面)这样做的方法是每15秒运行一次下面的查询并将结果存储在另一个表中。

select a.attribute,a.value as objectId, object_name(convert(int,a.value))
from sys.dm_exec_cached_plans p
outer apply sys.dm_exec_plan_attributes(p.plan_handle) a
outer apply sys.dm_exec_plan_attributes(p.plan_handle) a1
where p.objtype='View' 
and a.attribute='objectid' and a.value>0 
and a1.attribute='dbid' and a1.value=DB_ID()

您的专家对此方法有何看法?在我的测试中,这似乎运作良好。

0 个答案:

没有答案