Sql server 记录数据库表、函数、存储过程、视图等的使用情况

Sql server 记录数据库表、函数、存储过程、视图等的使用情况,sql-server,database,database-design,logging,refactoring-databases,Sql Server,Database,Database Design,Logging,Refactoring Databases,我在一个基于SQL server数据库的系统上工作,该数据库经过多年的开发。它的数据量不是很大(几GB),但它有很多复杂性(数百个表、数百个存储过程) 我想从清理那些不再使用的东西开始。我们有一个周/月/季/年周期,这意味着一些东西一年内不会使用。然而,如果有几个月没有使用过的东西的简短列表,我们也许可以通过检查来决定它们是否仍然有用 我的目的是开始记录对所有数据库对象的访问。我有一些想法,但我想要的是一个日志,我可以把它变成一个没有被使用的东西的列表。我有一些想法,但我想得到一些专家的帮助 编

我在一个基于SQL server数据库的系统上工作,该数据库经过多年的开发。它的数据量不是很大(几GB),但它有很多复杂性(数百个表、数百个存储过程)

我想从清理那些不再使用的东西开始。我们有一个周/月/季/年周期,这意味着一些东西一年内不会使用。然而,如果有几个月没有使用过的东西的简短列表,我们也许可以通过检查来决定它们是否仍然有用

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


编辑:我还想澄清一下,我可以我想看到对表/视图以及存储的过程和函数的访问

我的建议是使用SQL profiler,但您需要小心运行它,因为当您运行跟踪时,它确实会带来性能开销

这是一个类似的问题,特别是当使用存储过程时:

您检查:最后一次更新保留在
最后一次用户更新
列中,最后一次选择保留在
最后一次用户搜索
最后一次用户扫描
最后一次用户查找
中的一个。请注意,计数器在SQL Server启动时重置,因此您需要运行应用程序并对每个功能进行彻底测试,以获得相关结果


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

什么是您的数据库服务器软件?Sql server 2005/2008。我们两个都有。是的,这是我关心的问题。数据库服务器负载不重,但我认为在“batchComplete”上运行一年的跟踪可能会产生大量数据。啊,是的。我没看到那个。但是我有一些代码可以用一个日志语句标记所有存储的进程。不过,我还想记录表和视图访问。我已经考虑过在表和视图中添加日志触发器以进行插入/更新/删除,但我不知道如何捕获“选择”访问。我忘记了动态视图,因此您可以得到+1。我不确定它做得是否正确。它对于查找最常用的存储过程/表/索引非常有用,但我不确定它是否能找到每个表的所有用途。不过我不确定,所以不要开枪!这就是我所说的“彻底测试”的意思。如果您的测试电池使用了产品的每一项功能,那么最终您将收集到所有使用过的表/索引/程序。我知道,在现实世界中,如果可能的话,提出一个测试来测试应用程序所做的一切并不是微不足道的。