Skip to content

Commit fd0154a

Browse files
committed
Add Which sp_configure Options Clear the Plan Cache script
1 parent 66b31f1 commit fd0154a

1 file changed

Lines changed: 50 additions & 0 deletions

File tree

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/*
2+
Author: Brent Ozar
3+
Source link: https://www.brentozar.com/archive/2017/09/sp_configure-options-clear-plan-cache/
4+
*/
5+
6+
DECLARE @string_to_execute NVARCHAR(1000), @current_name NVARCHAR(200), @current_value_in_use SQL_VARIANT, @current_maximum SQL_VARIANT;
7+
8+
CREATE TABLE #configs (name NVARCHAR(200), value_in_use SQL_VARIANT, maximum SQL_VARIANT, clears_plan_cache BIT);
9+
INSERT INTO #configs (name, value_in_use, maximum, clears_plan_cache)
10+
SELECT name, value_in_use, maximum, 0
11+
FROM sys.configurations;
12+
13+
DECLARE config_cursor CURSOR FOR
14+
SELECT name, value_in_use, maximum
15+
FROM #configs
16+
WHERE name NOT IN ('default language', 'default full-text language', 'min server memory (MB)', 'user options');
17+
18+
OPEN config_cursor;
19+
FETCH NEXT FROM config_cursor INTO @current_name, @current_value_in_use, @current_maximum;
20+
21+
22+
WHILE @@FETCH_STATUS = 0
23+
BEGIN
24+
/* Put something in the plan cache */
25+
26+
/* Run sp_configure to set it to maximum */
27+
SET @string_to_execute = 'sp_configure ''' + @current_name + ''', ''' + CAST(@current_maximum AS NVARCHAR(100)) + '''; RECONFIGURE WITH OVERRIDE;';
28+
EXEC(@string_to_execute);
29+
30+
/* Check the plan cache */
31+
IF NOT EXISTS(SELECT * FROM sys.dm_exec_query_stats)
32+
UPDATE #configs
33+
SET clears_plan_cache = 1
34+
WHERE name = @current_name;
35+
36+
/* Run sp_configure to set it back */
37+
SET @string_to_execute = 'sp_configure ''' + @current_name + ''', ''' + CAST(@current_value_in_use AS NVARCHAR(100)) + '''; RECONFIGURE WITH OVERRIDE;';
38+
EXEC(@string_to_execute);
39+
40+
FETCH NEXT FROM config_cursor INTO @current_name, @current_value_in_use, @current_maximum;
41+
END
42+
CLOSE config_cursor;
43+
DEALLOCATE config_cursor;
44+
45+
SELECT name, clears_plan_cache
46+
FROM #configs
47+
WHERE clears_plan_cache = 1
48+
ORDER BY name;
49+
50+
DROP TABLE #configs;

0 commit comments

Comments
 (0)