SQL数据库是否有"代码覆盖率"等价物?

tom*_*tom 5 sql sql-server oracle code-coverage

我有一个包含许多表的数据库,以及许多不再使用的表.虽然我可以手动对每个表进行排序以查看它们是否仍在使用中,但这将是一项繁琐的任务.是否有任何软件/隐藏功能可用于SQL Server/Oracle数据库,这些功能将返回"过去一个月没有使用过表x,y,z"等信息"表a,b,c已被使用17今天的时代"?或者可能是通过"Date Last Modified/Selected From"对表格进行排序的方法?

或者有更好的方法来做这件事吗?谢谢

编辑:我在执行"SELECT*FROM sys.tables ORDER BY modify_date desc"时找到了"modify_date"列,但这似乎只跟踪对表结构的修改,而不是其内容.

SQL*_*ace 6

替换spt_values为您感兴趣的表名,查询将给出上次使用它以及它的用途

从这里:找出在SQL Server 2005和2008中的特殊或过程调用中使用了多少次表

SELECT * FROM(SELECT COALESCE(OBJECT_NAME(s2.objectid),'Ad-Hoc') AS ProcName,execution_count,
    (SELECT TOP 1 SUBSTRING(s2.TEXT,statement_start_offset / 2+1 ,
      ( (CASE WHEN statement_end_offset = -1
         THEN (LEN(CONVERT(NVARCHAR(MAX),s2.TEXT)) * 2)
         ELSE statement_end_offset END)  - statement_start_offset) / 2+1))  AS sql_statement,
       last_execution_time
FROM sys.dm_exec_query_stats AS s1
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2 ) x
WHERE sql_statement like '%spt_values%'  -- replace here
AND sql_statement NOT like 'SELECT * FROM(SELECT coalesce(object_name(s2.objectid)%'
ORDER BY execution_count DESC
Run Code Online (Sandbox Code Playgroud)

请记住,如果您重新启动此框,则会将其清除