我在一个基于SQL服务器数据库的系统上工作,该数据库有很多年的开发经验。它的数据量不是很大(几GB),但它有很多复杂性(数百个表,数百个存储过程)。
我想从清理不再使用的东西开始。我们有每周/每月/每季度/每年周期,这意味着一些东西将不会被使用一年。但是,如果有几个月没有使用过的简短清单,我们或许可以通过检查确定它们是否仍然有用。
我的目的是开始记录对所有数据库对象的访问。我有一些想法,但我想要的是一个日志,我可以把它变成一个没有被使用的东西的列表。我有一些想法,但我想要一些专家的帮助。
编辑:我还想澄清一下,我希望能够看到对表/视图的访问以及存储的过程和函数。
答案 0 :(得分:1)
这是一个类似的问题,特别是询问何时使用存储过程: How do I log the frequency and last-used time for a stored procedure?
答案 1 :(得分:1)
您检查sys.dm_db_index_usage_stats
:上一次更新保留在last_user_update
列中,最后一次选择保留在last_user_seek
,last_user_scan
或{{1} }。请注意,计数器在SQL Server启动时会重置,因此您需要运行应用程序并对每个功能进行全面测试以获得相关结果。
对于存储过程,您应该启动监视SP:Starting
事件的服务器跟踪。运行测试后,再次执行产品的每个功能,停止跟踪并使用SQL聚合函数计算跟踪文件中last_user_lookup
中不同出现的过程名称。您使用fn_trace_gettable
读取了跟踪。
答案 2 :(得分:0)
好的SQL分析器是我的建议,但是你需要小心运行,因为它会在你运行跟踪时引入性能开销。