sql-server – 识别未使用的存储过程

前端之家收集整理的这篇文章主要介绍了sql-server – 识别未使用的存储过程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
明年,我正在努力清理几个sql Server环境.

我们有大约10,000个存储过程并且估计它们中只有大约1000个被定期使用,而另外200个左右被用于极少数情况,这意味着我们有很多工作要做.

由于我们有多个可以访问这些数据库和过程的部门和团队,因此我们并不总是调用这些过程的人,这意味着我们必须确定调用哪些过程.最重要的是,我们希望在几个月内确定这一点,而不是在几天内(这消除了一些可能性).

一种方法是使用sql Server Profiler并跟踪调用的过程,并将它们与我们所拥有的过程列表进行比较,同时标记是否使用过程.从那时起,我们可以将程序移动到不同的模式,以防部门尖叫.

在这里使用Profiler是最有效的方法吗?和/或你们有没有做过类似的事情,并找到另一种方式/更好的方法来做到这一点?

解决方法

您可以在测试或业务周期中使用 server side trace(与使用Profiler GUI不同,产生更多资源),并仅捕获与SP相关的内容.然后,您可以将其加载到表或Excel中以进行进一步分析.

第二种方法,是使用DMV sys.dm_exec_procedure_stats(限制,如果重新启动sql server,则刷新数据).

您甚至可以安排作业将DMV数据捕获到表中以使其保持不变.

-- Get list of possibly unused SPs (sql 2008 only)
    SELECT p.name AS 'SP Name'        -- Get list of all SPs in the current database
    FROM sys.procedures AS p
    WHERE p.is_ms_shipped = 0

    EXCEPT

    SELECT p.name AS 'SP Name'        -- Get list of all SPs from the current database 
    FROM sys.procedures AS p          -- that are in the procedure cache
    INNER JOIN sys.dm_exec_procedure_stats AS qs
    ON p.object_id = qs.object_id
    WHERE p.is_ms_shipped = 0;

参考:

> How to find unused Stored Procedures in SQL Server 2005/2008
> Identifying Unused Objects in a Database

猜你在找的MsSQL相关文章