Rumah > pangkalan data > tutorial mysql > 如何快速重新编译所有的存储过程

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-06-07 16:06:42
asal
1324 orang telah melayarinya

自己的一个写法,大概思路是从sys.Objects里取得所有的存储过程,然后拼动态字符串来使用sp_recompile重新编译所有的SP。 SELECT ROW_NUMBER() OVER(ORDER BY name) AS RID,exec sp_recompile + name + AS TextINTO #TEMPFROM sys.objects WHERE TYPE = PDEC

自己的一个写法,大概思路是从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
Salin selepas log masuk
不知道还有没有什么更好的方法。
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan