gpt4 book ai didi

sql-server - 识别 Microsoft SQL Server 2005 中未使用的对象

转载 作者:行者123 更新时间:2023-12-02 05:21:52 25 4
gpt4 key购买 nike

查明一个对象是否被其他对象引用是一项简单的任务。我想做的是确定它是否实际被使用

我的解决方案最初涉及包含数据库中对象列表的表和每小时作业的组合。

这项工作做了两件事。首先,它查找自上次运行以来已添加到数据库中的新对象。其次,它查看了sql的对象缓存。如果表中的对象已在缓存中列出,则会在表中将其标记为最近“看到”正在使用。

在六个月或其他时间结束时,对表中的内容进行检查。 self 开始监控以来,表中列出的任何未曾被引用的内容可能都可以安全地备份和删除。

当然,有可能存在只使用一次的对象,例如每年一次或其他什么,但它似乎在大多数情况下都有效。

不过,工作起来有点痛苦。

我正在使用大约六个数据库,其中大多数都有大量遗留表,这些表在它们的原始创建者转到其他公司后很长一段时间仍然存在。

我正在寻找一种相当可靠的方法来跟踪对象(表、 View 、存储过程或函数)何时被调用。

对于目前监控此类事情的人来说,您使用什么方法/代码并推荐它?

最佳答案

在 SQL Server 2005 中,您可以使用动态管理 View sys.dm_db_index_usage_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

原文如下:

http://www.sqlmag.com/Article/ArticleID/53878/sql_server_53878.html

请记住,这些使用情况统计信息会在 SQL Server 重新启动时重置。

关于sql-server - 识别 Microsoft SQL Server 2005 中未使用的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/290773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com