您的位置:首页 > 数据库

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

2014-10-31 17:54 253 查看
自己的一个写法,大概思路是从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