码迷,mamicode.com
首页 > 其他好文 > 详细

如何快速重新编译所有的存储过程

时间:2014-10-31 19:09:32      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:sql   sp_recompile   

自己的一个写法,大概思路是从sys.Objects里取得所有的存储过程,然后拼动态字符串来使用sp_recompile重新编译所有的SP。

SELECT ROW_NUMBER() OVER(ORDER BY name) AS RID,'exec sp_recompile ''' + name +'''' AS Text
INTO #TEMP
FROM sys.objects WHERE TYPE = 'P'

DECLARE @MaxID INT
DECLARE @SQL VARCHAR(MAX)
SELECT @MaxID = MAX(RID) FROM #TEMP

WHILE (@MaxID IS NOT NULL)
BEGIN
	SELECT @SQL = Text
	FROM #TEMP
	WHERE RID = @MaxID
	
	--PRINT @SQL
	EXEC (@SQL)
	
	SELECT @MaxID = MAX(RID) FROM #TEMP WHERE RID < @MaxID 
END

不知道还有没有什么更好的方法。

如何快速重新编译所有的存储过程

标签:sql   sp_recompile   

原文地址:http://blog.csdn.net/iflysoft/article/details/40658417

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!