|
| 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