Skip to content

Commit 8b82116

Browse files
Merge pull request #684 from ReeceGoding/quickie-store-give-t-sql-for-plan-forcing-and-hinting
sp_QuickieStore: added expert mode T-SQL for plan forcing and hinting
2 parents f1b0be8 + d16feb7 commit 8b82116

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

sp_QuickieStore/sp_QuickieStore.sql

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1093,6 +1093,7 @@ CREATE TABLE
10931093
is_trivial_plan bit NOT NULL,
10941094
is_parallel_plan bit NOT NULL,
10951095
is_forced_plan bit NOT NULL,
1096+
toggle_forcing nvarchar(300) NOT NULL,
10961097
is_natively_compiled bit NOT NULL,
10971098
force_failure_count bigint NOT NULL,
10981099
last_force_failure_reason_desc nvarchar(128) NULL,
@@ -1553,11 +1554,13 @@ INSERT INTO
15531554
column_id, metric_group, metric_type, column_name, column_source, is_conditional, condition_param, condition_value, expert_only, format_pattern
15541555
)
15551556
VALUES
1557+
(10, 'emergency_troubleshooting', 'toggle_forcing', 'toggle_forcing', 'qsp.toggle_forcing', 0, NULL, NULL, 1, NULL),
15561558
(20, 'metadata', 'force_count', 'force_failure_count', 'qsp.force_failure_count', 0, NULL, NULL, 0, NULL),
15571559
(30, 'metadata', 'force_reason', 'last_force_failure_reason_desc', 'qsp.last_force_failure_reason_desc', 0, NULL, NULL, 0, NULL),
15581560
/* SQL 2022 specific columns */
15591561
(40, 'sql_2022', 'feedback', 'has_query_feedback', 'CASE WHEN EXISTS (SELECT 1/0 FROM #query_store_plan_feedback AS qspf WHERE qspf.plan_id = qsp.plan_id) THEN ''Yes'' ELSE ''No'' END', 1, 'sql_2022_views', 1, 0, NULL),
15601562
(50, 'sql_2022', 'hints', 'has_query_store_hints', 'CASE WHEN EXISTS (SELECT 1/0 FROM #query_store_query_hints AS qsqh WHERE qsqh.query_id = qsp.query_id) THEN ''Yes'' ELSE ''No'' END', 1, 'sql_2022_views', 1, 0, NULL),
1563+
(55, 'sql_2022', 'hints', 'set_query_store_hints', '''EXECUTE ''+ QUOTENAME(DB_NAME(qsp.database_id)) + ''.sys.sp_query_store_set_hints @query_id = '' + CONVERT(nvarchar(20), qsq.query_id) + '', @query_hints = N''''OPTION(older_hints_go_here, USE HINT(''''''''newer_hints_go_here''''''''))'''';''', 1, 'sql_2022_views', 1, 1, NULL),
15611564
(60, 'sql_2022', 'variants', 'has_plan_variants', 'CASE WHEN EXISTS (SELECT 1/0 FROM #query_store_query_variant AS qsqv WHERE qsqv.query_variant_query_id = qsp.query_id) THEN ''Yes'' ELSE ''No'' END', 1, 'sql_2022_views', 1, 0, NULL),
15621565
(70, 'sql_2022', 'replay', 'has_compile_replay_script', 'qsp.has_compile_replay_script', 1, 'sql_2022_views', 1, 0, NULL),
15631566
(80, 'sql_2022', 'opt_forcing', 'is_optimized_plan_forcing_disabled', 'qsp.is_optimized_plan_forcing_disabled', 1, 'sql_2022_views', 1, 0, NULL),
@@ -7018,6 +7021,14 @@ SELECT
70187021
qsp.is_trivial_plan,
70197022
qsp.is_parallel_plan,
70207023
qsp.is_forced_plan,
7024+
toggle_forcing =
7025+
CASE
7026+
qsp.is_forced_plan
7027+
WHEN 1
7028+
THEN ''EXECUTE ' + @database_name_quoted + '.sys.sp_query_store_unforce_plan @query_id = '' + CONVERT(nvarchar(20), qsp.query_id) + '', @plan_id = '' + CONVERT(nvarchar(20), qsp.plan_id) + '';''
7029+
WHEN 0
7030+
THEN ''EXECUTE ' + @database_name_quoted + '.sys.sp_query_store_force_plan @query_id = '' + CONVERT(nvarchar(20), qsp.query_id) + '', @plan_id = '' + CONVERT(nvarchar(20), qsp.plan_id) + '', @disable_optimized_plan_forcing = ? ;''
7031+
END,
70217032
qsp.is_natively_compiled,
70227033
qsp.force_failure_count,
70237034
qsp.last_force_failure_reason_desc,
@@ -7110,6 +7121,7 @@ WITH
71107121
is_trivial_plan,
71117122
is_parallel_plan,
71127123
is_forced_plan,
7124+
toggle_forcing,
71137125
is_natively_compiled,
71147126
force_failure_count,
71157127
last_force_failure_reason_desc,
@@ -9159,6 +9171,8 @@ BEGIN
91599171
qsqh.query_hint_id,
91609172
qsqh.query_id,
91619173
qsqh.query_hint_text,
9174+
remove_hint =
9175+
''EXECUTE '' + QUOTENAME(DB_NAME(qsqh.database_id)) + ''.sys.sp_query_store_clear_hints @query_id = '' + CONVERT(nvarchar(20), qsqh.query_id) + '';'',
91629176
qsqh.last_query_hint_failure_reason_desc,
91639177
query_hint_failure_count = ' +
91649178
CASE

0 commit comments

Comments
 (0)