有没有办法列出服务器(所有数据库)及其活动的所有对象?
我的意思是活动:
目标是消除一些未使用的对象或至少识别它们,以便我们进一步分析它。如果有更好的方法,请告诉我。
答案 0 :(得分:2)
如果您的代码中没有特定的审核或显式日志记录说明,您可能很难实现。
以下是一些提示,在我看来,可以帮助您检索所需的信息:
表/视图您可以依赖记录索引信息的动态管理视图:sys.dm_db_index_usage_stats
(更多信息here)
SELECT last_user_update, *
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID('YourDBName')
AND OBJECT_ID = OBJECT_ID('[YourDBName].[dbo].[YourTableName]')
存储过程如果仍然缓存SP执行,您可以查询sys.dm_exec_procedure_stats
(更多信息here)
select last_execution_time, *
from sys.dm_exec_procedure_stats
WHERE database_id = DB_ID('YourDBName')
AND OBJECT_ID = OBJECT_ID('[YourDBName].[dbo].[YourSpName]')
功能如果仍然缓存了功能执行,您可以查询sys.dm_exec_query_stats
(来自this精彩回答),更多信息here
SELECT qs.last_execution_time
FROM sys.dm_exec_query_stats qs
CROSS APPLY (SELECT 1 AS X
FROM sys.dm_exec_plan_attributes(qs.plan_handle)
WHERE ( attribute = 'objectid'
AND value = OBJECT_ID('[YourDBName].[dbo].[YourFunctionName]') )
OR ( attribute = 'dbid'
AND value = DB_ID('YourDBName') )
HAVING COUNT(*) = 2) CA