Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 8a98a3c

Browse files
Merge pull request BrentOzarULTD#1317 from BrentOzarULTD/Issue_1316
Issue 1316
2 parents d8b53fc + cdbc2cd commit 8a98a3c

File tree

2 files changed

+72
-32
lines changed

2 files changed

+72
-32
lines changed

‎sp_BlitzCache.sql‎

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1147,9 +1147,7 @@ CREATE TABLE #stored_proc_info
11471147
compile_time_value NVARCHAR(128),
11481148
proc_name NVARCHAR(300),
11491149
column_name NVARCHAR(128),
1150-
converted_to NVARCHAR(128),
1151-
parameterization_type INT,
1152-
optimization_level VARCHAR(100)
1150+
converted_to NVARCHAR(128)
11531151
);
11541152

11551153
CREATE TABLE #plan_creation
@@ -3086,7 +3084,7 @@ OPTION (RECOMPILE);
30863084
IF EXISTS ( SELECT 1
30873085
FROM ##bou_BlitzCacheProcs AS bbcp
30883086
WHERE bbcp.implicit_conversions = 1
3089-
OR bbcp.QueryType LIKE 'Procedure or Function:%')
3087+
OR bbcp.QueryType LIKE '%Procedure or Function:%')
30903088
BEGIN
30913089

30923090
RAISERROR(N'Getting information about implicit conversions and stored proc parameters', 0, 1) WITH NOWAIT;
@@ -3105,7 +3103,8 @@ SELECT DISTINCT @@SPID,
31053103
q.n.value('@ParameterCompiledValue', 'NVARCHAR(1000)') AS compile_time_value
31063104
FROM #query_plan AS qp
31073105
JOIN ##bou_BlitzCacheProcs AS b
3108-
ON b.QueryHash = qp.QueryHash
3106+
ON (b.QueryType = 'adhoc' AND b.QueryHash = qp.QueryHash)
3107+
OR (b.QueryType <> 'adhoc' AND b.SqlHandle = qp.SqlHandle)
31093108
CROSS APPLY qp.query_plan.nodes('//p:QueryPlan/p:ParameterList/p:ColumnReference') AS q(n)
31103109
WHERE b.SPID = @@SPID
31113110
OPTION ( RECOMPILE );
@@ -3122,7 +3121,8 @@ SELECT DISTINCT @@SPID,
31223121
qq.c.value('@Expression', 'NVARCHAR(128)') AS expression
31233122
FROM #query_plan AS qp
31243123
JOIN ##bou_BlitzCacheProcs AS b
3125-
ON b.QueryHash = qp.QueryHash
3124+
ON (b.QueryType = 'adhoc' AND b.QueryHash = qp.QueryHash)
3125+
OR (b.QueryType <> 'adhoc' AND b.SqlHandle = qp.SqlHandle)
31263126
CROSS APPLY qp.query_plan.nodes('//p:QueryPlan/p:Warnings/p:PlanAffectingConvert') AS qq(c)
31273127
WHERE qq.c.exist('@ConvertIssue[.="Seek Plan"]') = 1
31283128
AND qp.QueryHash IS NOT NULL
@@ -3175,15 +3175,32 @@ SELECT @@SPID AS SPID,
31753175
FROM #conversion_info AS ci
31763176
OPTION ( RECOMPILE );
31773177

3178-
RAISERROR(N'Updating variables', 0, 1) WITH NOWAIT;
3179-
UPDATE sp
3180-
SET sp.variable_datatype = vi.variable_datatype,
3181-
sp.compile_time_value = vi.compile_time_value
3182-
FROM #stored_proc_info AS sp
3183-
JOIN #variable_info AS vi
3184-
ON sp.QueryHash = vi.QueryHash
3185-
AND sp.variable_name = vi.variable_name
3186-
OPTION ( RECOMPILE );
3178+
IF EXISTS ( SELECT *
3179+
FROM #stored_proc_info AS sp
3180+
JOIN #variable_info AS vi
3181+
ON (sp.proc_name = 'adhoc' AND sp.QueryHash = vi.QueryHash)
3182+
OR (sp.proc_name <> 'adhoc' AND sp.SqlHandle = vi.SqlHandle)
3183+
AND sp.variable_name = vi.variable_name )
3184+
BEGIN
3185+
RAISERROR(N'Updating variables', 0, 1) WITH NOWAIT;
3186+
UPDATE sp
3187+
SET sp.variable_datatype = vi.variable_datatype,
3188+
sp.compile_time_value = vi.compile_time_value
3189+
FROM #stored_proc_info AS sp
3190+
JOIN #variable_info AS vi
3191+
ON (sp.proc_name = 'adhoc' AND sp.QueryHash = vi.QueryHash)
3192+
OR (sp.proc_name <> 'adhoc' AND sp.SqlHandle = vi.SqlHandle)
3193+
AND sp.variable_name = vi.variable_name
3194+
OPTION ( RECOMPILE );
3195+
END
3196+
ELSE
3197+
BEGIN
3198+
RAISERROR(N'Inserting variables', 0, 1) WITH NOWAIT;
3199+
INSERT #stored_proc_info ( SPID, SqlHandle, QueryHash, variable_name, variable_datatype, compile_time_value, proc_name )
3200+
SELECT vi.SPID, vi.SqlHandle, vi.QueryHash, vi.variable_name, vi.variable_datatype, vi.compile_time_value, vi.proc_name
3201+
FROM #variable_info AS vi
3202+
OPTION ( RECOMPILE );
3203+
END
31873204

31883205
RAISERROR(N'Updating procs', 0, 1) WITH NOWAIT;
31893206
UPDATE s
@@ -3201,6 +3218,9 @@ SET s.variable_datatype = CASE WHEN s.variable_datatype LIKE '%(%)%' THEN
32013218
CHARINDEX(')', s.compile_time_value) - 1
32023219
- CHARINDEX('(', s.compile_time_value)
32033220
)
3221+
WHEN variable_datatype NOT IN ('bit', 'tinyint', 'smallint', 'int', 'bigint')
3222+
AND s.variable_datatype NOT LIKE '%binary%' THEN
3223+
QUOTENAME(compile_time_value, '''')
32043224
ELSE s.compile_time_value
32053225
END
32063226
FROM #stored_proc_info AS s

‎sp_BlitzQueryStore.sql‎

Lines changed: 37 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -778,9 +778,7 @@ CREATE TABLE #stored_proc_info
778778
compile_time_value NVARCHAR(128),
779779
proc_name NVARCHAR(300),
780780
column_name NVARCHAR(128),
781-
converted_to NVARCHAR(128),
782-
parameterization_type INT,
783-
optimization_level VARCHAR(100),
781+
converted_to NVARCHAR(128)
784782
INDEX tf_ix_ids CLUSTERED (sql_handle, query_hash)
785783
);
786784

@@ -2969,8 +2967,9 @@ IF EXISTS ( SELECT 1
29692967
q.n.value('@ParameterDataType', 'NVARCHAR(128)') AS variable_datatype,
29702968
q.n.value('@ParameterCompiledValue', 'NVARCHAR(1000)') AS compile_time_value
29712969
FROM #query_plan AS qp
2972-
JOIN #working_warnings AS b
2973-
ON b.query_hash = qp.query_hash
2970+
JOIN #working_warnings AS b
2971+
ON (b.query_hash = qp.query_hash AND b.proc_or_function_name = 'adhoc')
2972+
OR (b.sql_handle = qp.sql_handle AND b.proc_or_function_name <> 'adhoc')
29742973
CROSS APPLY qp.query_plan.nodes('//p:QueryPlan/p:ParameterList/p:ColumnReference') AS q(n)
29752974
OPTION ( RECOMPILE );
29762975

@@ -2983,8 +2982,9 @@ IF EXISTS ( SELECT 1
29832982
b.proc_or_function_name AS proc_name,
29842983
qq.c.value('@Expression', 'NVARCHAR(128)') AS expression
29852984
FROM #query_plan AS qp
2986-
JOIN #working_warnings AS b
2987-
ON b.query_hash = qp.query_hash
2985+
JOIN #working_warnings AS b
2986+
ON (b.query_hash = qp.query_hash AND b.proc_or_function_name = 'adhoc')
2987+
OR (b.sql_handle = qp.sql_handle AND b.proc_or_function_name <> 'adhoc')
29882988
CROSS APPLY qp.query_plan.nodes('//p:QueryPlan/p:Warnings/p:PlanAffectingConvert') AS qq(c)
29892989
WHERE qq.c.exist('@ConvertIssue[.="Seek Plan"]') = 1
29902990
AND b.implicit_conversions = 1
@@ -3034,15 +3034,32 @@ IF EXISTS ( SELECT 1
30343034
FROM #conversion_info AS ci
30353035
OPTION ( RECOMPILE );
30363036

3037-
RAISERROR(N'Updating variables', 0, 1) WITH NOWAIT;
3038-
UPDATE sp
3039-
SET sp.variable_datatype = vi.variable_datatype,
3040-
sp.compile_time_value = vi.compile_time_value
3041-
FROM #stored_proc_info AS sp
3042-
JOIN #variable_info AS vi
3043-
ON sp.query_hash = vi.query_hash
3044-
AND sp.variable_name = vi.variable_name
3045-
OPTION ( RECOMPILE );
3037+
IF EXISTS ( SELECT *
3038+
FROM #stored_proc_info AS sp
3039+
JOIN #variable_info AS vi
3040+
ON (sp.proc_name = 'adhoc' AND sp.query_hash = vi.query_hash)
3041+
OR (sp.proc_name <> 'adhoc' AND sp.sql_handle = vi.sql_handle)
3042+
AND sp.variable_name = vi.variable_name )
3043+
BEGIN
3044+
RAISERROR(N'Updating variables', 0, 1) WITH NOWAIT;
3045+
UPDATE sp
3046+
SET sp.variable_datatype = vi.variable_datatype,
3047+
sp.compile_time_value = vi.compile_time_value
3048+
FROM #stored_proc_info AS sp
3049+
JOIN #variable_info AS vi
3050+
ON (sp.proc_name = 'adhoc' AND sp.query_hash = vi.query_hash)
3051+
OR (sp.proc_name <> 'adhoc' AND sp.sql_handle = vi.sql_handle)
3052+
AND sp.variable_name = vi.variable_name
3053+
OPTION ( RECOMPILE );
3054+
END
3055+
ELSE
3056+
BEGIN
3057+
RAISERROR(N'Inserting variables', 0, 1) WITH NOWAIT;
3058+
INSERT #stored_proc_info ( sql_handle, query_hash, variable_name, variable_datatype, compile_time_value, proc_name )
3059+
SELECT vi.sql_handle, vi.query_hash, vi.variable_name, vi.variable_datatype, vi.compile_time_value, vi.proc_name
3060+
FROM #variable_info AS vi
3061+
OPTION ( RECOMPILE );
3062+
END
30463063

30473064
RAISERROR(N'Updating procs', 0, 1) WITH NOWAIT;
30483065
UPDATE s
@@ -3060,7 +3077,10 @@ IF EXISTS ( SELECT 1
30603077
CHARINDEX(')', s.compile_time_value) - 1
30613078
- CHARINDEX('(', s.compile_time_value)
30623079
)
3063-
ELSE s.compile_time_value
3080+
WHEN variable_datatype NOT IN ('bit', 'tinyint', 'smallint', 'int', 'bigint')
3081+
AND s.variable_datatype NOT LIKE '%binary%' THEN
3082+
QUOTENAME(compile_time_value, '''')
3083+
ELSE s.compile_time_value
30643084
END
30653085
FROM #stored_proc_info AS s
30663086
OPTION(RECOMPILE);

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /