列出所有对象和相关活动 SQL Server 2008R2

List all objects and related activities SQL Server 2008R2

有没有办法列出服务器(对于所有数据库)的所有对象及其活动?

我所说的活动是什么意思:

目标是消除一些未使用的对象或至少识别它们以便我们可以进一步分析它。如果有更好的方法,请告诉我。

如果您的代码中没有特定的审核或明确的日志记录说明,您所要求的可能难以实现。

在我看来,这里有一些提示可以帮助您检索所需的信息:

  1. Tables/Views 可以依赖记录索引信息的动态管理视图:sys.dm_db_index_usage_stats (more info 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]') 
    
  2. 存储过程 如果 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]')
    
  3. Functions 如果函数执行仍然被缓存,你可以查询 sys.dm_exec_query_stats(来自 great answer), more info 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