Sql server 识别Microsoft SQL Server 2005中未使用的对象
确定一个对象是否被其他对象引用是一项简单的任务。我想做的是确定它是否实际被使用 我的解决方案最初包括一个包含数据库中对象列表的表和一个小时作业的组合 这份工作做了两件事。首先,它查找自上次运行以来添加到数据库中的新对象。其次,它研究了sql的对象缓存。如果表中的某个对象列在缓存中,则该对象在表中被标记为最近“看到”正在使用 在六个月或其他时间结束时,检查了表格的内容。表中列出的自我开始监视以来未被引用的任何内容都可以安全地备份和删除 当然,也有可能只使用一年一次的物品,但它似乎在大部分情况下都有效 不过,工作起来有点痛苦 我正在使用的数据库大约有六个,其中大多数都有大量的遗留表,这些表在它们最初的创建者转移到其他公司后很长一段时间仍然存在 我要寻找的是一种相当可靠的跟踪对象(表、视图、存储过程或函数)何时被调用的方法Sql server 识别Microsoft SQL Server 2005中未使用的对象,sql-server,maintenance,Sql Server,Maintenance,确定一个对象是否被其他对象引用是一项简单的任务。我想做的是确定它是否实际被使用 我的解决方案最初包括一个包含数据库中对象列表的表和一个小时作业的组合 这份工作做了两件事。首先,它查找自上次运行以来添加到数据库中的新对象。其次,它研究了sql的对象缓存。如果表中的某个对象列在缓存中,则该对象在表中被标记为最近“看到”正在使用 在六个月或其他时间结束时,检查了表格的内容。表中列出的自我开始监视以来未被引用的任何内容都可以安全地备份和删除 当然,也有可能只使用一年一次的物品,但它似乎在大部分情况下都有
对于目前监控此类事件的人员,您使用什么方法/代码?您会推荐它吗?对于SQL Server 2005,您可以使用动态管理视图sys.dm\u db\u index\u usage\u stats。名称上写着“索引”,但这有点误导——每个表在这里都有一个条目,即使它没有任何索引。下面是来自SQL杂志的一个有用的查询:
SELECT
t.name AS 'Table',
SUM(i.user_seeks + i.user_scans + i.user_lookups)
AS 'Total accesses',
SUM(i.user_seeks) AS 'Seeks',
SUM(i.user_scans) AS 'Scans',
SUM(i.user_lookups) AS 'Lookups'
FROM
sys.dm_db_index_usage_stats i RIGHT OUTER JOIN
sys.tables t ON (t.object_id = i.object_id)
GROUP BY
i.object_id,
t.name
ORDER BY [Total accesses] DESC
以下是原文:
请记住,当SQL Server重新启动时,这些使用情况统计信息会重置。如何调整此设置以查找未使用的视图和存储过程?@FunkySi很遗憾,您不能。SQL Server不会跟踪视图或存储过程的类似数据。