1

我使用基于SQL Server数据库的系统,该数据库有很多年的开发经验。数据量不是很大(几GB),但它有很多复杂性(数百个表,数百个存储过程)。数据库表,函数,存储过程,视图等的日志使用情况

我想先清理那些不再使用的东西。我们有一个每周/每月/每季/每年的周期,这意味着有些东西不会被使用一年。但是,如果有几个月没有使用过的简短列表,我们可以通过检查来确定它们是否仍然有用。

我的意图是开始记录对所有数据库对象的访问。我有一些想法,但我想要的是一个日志,我可以把它变成一个没有被使用的事物列表。我有一些想法,但我想要一些专家的帮助。

编辑:我也想澄清一下,我可以希望看到表/视图的访问以及存储的特效和函数。

+0

什么是您的数据库服务器软件? – 2009-08-03 08:50:39

+0

Sql Server 2005/2008。我们都有。 – 2009-08-03 09:19:15

回答

0

那么SQL分析器将是我的建议,但你需要小心有这样的运行,因为它确实会在运行跟踪时引入性能开销。

+0

是的,这是我的关注。数据库服务器负载不是很重,但我认为在“batchComplete”上运行一年的跟踪可能会产生大量数据。 – 2009-08-03 09:17:06

1

这是一个类似的问题,特别是问什么时候使用存储过程: How do I log the frequency and last-used time for a stored procedure?

+0

啊是的。我没有看到那一个。但是我有一些代码会用日志语句标记所有存储的特效。不过,我也想记录表格并查看访问权限。我已经考虑添加日志触发器的表和视图插入/更新/删除,但我不知道如何陷入“选择”访问。 – 2009-08-03 09:18:45

1

您检查sys.dm_db_index_usage_stats:最后的更新被保留在last_user_update列,最后选择是保留在last_user_seek之一,last_user_scanlast_user_lookup。请注意,计数器在SQL Server启动时重置,因此您需要运行应用程序并对每个功能进行彻底测试以获得相关结果。

对于存储过程,您应该启动监视SP:Starting事件的服务器跟踪。在运行测试之后,再次练习产品的每个功能,停止跟踪并使用SQL聚合函数统计跟踪文件中TextData中不同过程名称的出现次数。你用fn_trace_gettable读取跟踪。

相关问题