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 (编辑:上饶站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |