sql-server-2008-r2 - 列出所有对象和相关活动 SQL Server 2008R2
问题描述
有没有办法列出服务器中的所有对象(对于所有数据库)及其活动?
我所说的活动是什么意思:
- 如果对象是表/视图,我想知道上次是否更新了某些内容或访问了该表。
- 如果一个对象是一个函数,我想知道上次使用的函数。
- 如果一个对象是一个存储过程,我想知道上次执行的时间。
目标是消除一些未使用的对象或至少识别它们,以便我们可以进一步分析它。如果有更好的方法来做到这一点,请告诉我。
解决方案
如果您的代码中没有特定的审核或明确的日志记录说明,您所要求的可能难以实现。
在我看来,这里有一些提示可以帮助您检索所需的信息:
表/视图您可以依赖记录索引信息的动态管理视图:(
sys.dm_db_index_usage_stats
更多信息在这里)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
(更多信息在这里)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
(来自这个很好的答案),更多信息在这里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
推荐阅读
- python - 在 python 中使用 meshlab 函数
- javascript - 带有模块和主要转译的 Webpack
- java - 尝试使用 fetch 类型的惰性序列化实体
- java - 如何在 Vertx 页面上从 MariaDB 获取和显示数据?
- r - 根据 hcharter 中的给定序列设置热图颜色范围
- python - 管道几个熊猫数据框
- node.js - MongoDB 按 ID 分组,然后按日期分组
- ruby-on-rails - 如何通过 has_one 关系建立这个 has_many 关系?
- php - Laravel 使用集合过滤器和地图
- excel-formula - 如何使 Excel 显示空白而不是 0 作为值