Skip to content

Commit 6e35ca7

Browse files
authored
Merge pull request BrentOzarULTD#1323 from BrentOzarULTD/Issue_1322
Issue 1322
2 parents c5e1594 + 4244d71 commit 6e35ca7

File tree

2 files changed

+91
-88
lines changed

2 files changed

+91
-88
lines changed

sp_BlitzCache.sql

Lines changed: 51 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1136,20 +1136,6 @@ CREATE TABLE #configuration (
11361136
value DECIMAL(38,0)
11371137
);
11381138

1139-
CREATE TABLE #stored_proc_info
1140-
(
1141-
SPID INT,
1142-
SqlHandle VARBINARY(64),
1143-
QueryHash BINARY(8),
1144-
variable_name NVARCHAR(128),
1145-
variable_datatype NVARCHAR(128),
1146-
converted_column_name NVARCHAR(128),
1147-
compile_time_value NVARCHAR(128),
1148-
proc_name NVARCHAR(300),
1149-
column_name NVARCHAR(128),
1150-
converted_to NVARCHAR(128)
1151-
);
1152-
11531139
CREATE TABLE #plan_creation
11541140
(
11551141
percent_24 DECIMAL(5, 2),
@@ -1200,14 +1186,28 @@ CREATE TABLE #trace_flags
12001186
session_trace_flags VARCHAR(1000)
12011187
);
12021188

1189+
CREATE TABLE #stored_proc_info
1190+
(
1191+
SPID INT,
1192+
SqlHandle VARBINARY(64),
1193+
QueryHash BINARY(8),
1194+
variable_name NVARCHAR(256),
1195+
variable_datatype NVARCHAR(256),
1196+
converted_column_name NVARCHAR(256),
1197+
compile_time_value NVARCHAR(4000),
1198+
proc_name NVARCHAR(1000),
1199+
column_name NVARCHAR(256),
1200+
converted_to NVARCHAR(256)
1201+
);
1202+
12031203
CREATE TABLE #variable_info
12041204
(
12051205
SPID INT,
12061206
QueryHash BINARY(8),
12071207
SqlHandle VARBINARY(64),
1208-
proc_name NVARCHAR(128),
1209-
variable_name NVARCHAR(200),
1210-
variable_datatype NVARCHAR(128),
1208+
proc_name NVARCHAR(1000),
1209+
variable_name NVARCHAR(256),
1210+
variable_datatype NVARCHAR(256),
12111211
compile_time_value NVARCHAR(4000)
12121212
);
12131213

@@ -1216,7 +1216,7 @@ CREATE TABLE #conversion_info
12161216
SPID INT,
12171217
QueryHash BINARY(8),
12181218
SqlHandle VARBINARY(64),
1219-
proc_name NVARCHAR(128),
1219+
proc_name NVARCHAR(256),
12201220
expression NVARCHAR(4000),
12211221
at_charindex AS CHARINDEX('@', expression),
12221222
bracket_charindex AS CHARINDEX(']', expression, CHARINDEX('@', expression)) - CHARINDEX('@', expression),
@@ -3098,9 +3098,9 @@ SELECT DISTINCT @@SPID,
30983098
CASE WHEN b.QueryType = 'Statement' THEN b.QueryType
30993099
ELSE SUBSTRING(b.QueryType, CHARINDEX('[', b.QueryType), LEN(b.QueryType) - CHARINDEX('[', b.QueryType))
31003100
END AS proc_name,
3101-
q.n.value('@Column', 'NVARCHAR(128)') AS variable_name,
3102-
q.n.value('@ParameterDataType', 'NVARCHAR(128)') AS variable_datatype,
3103-
q.n.value('@ParameterCompiledValue', 'NVARCHAR(1000)') AS compile_time_value
3101+
q.n.value('@Column', 'NVARCHAR(256)') AS variable_name,
3102+
q.n.value('@ParameterDataType', 'NVARCHAR(256)') AS variable_datatype,
3103+
q.n.value('@ParameterCompiledValue', 'NVARCHAR(4000)') AS compile_time_value
31043104
FROM #query_plan AS qp
31053105
JOIN ##bou_BlitzCacheProcs AS b
31063106
ON (b.QueryType = 'adhoc' AND b.QueryHash = qp.QueryHash)
@@ -3118,7 +3118,7 @@ SELECT DISTINCT @@SPID,
31183118
CASE WHEN b.QueryType = 'Statement' THEN b.QueryType
31193119
ELSE SUBSTRING(b.QueryType, CHARINDEX('[', b.QueryType), LEN(b.QueryType) - CHARINDEX('[', b.QueryType))
31203120
END AS proc_name,
3121-
qq.c.value('@Expression', 'NVARCHAR(128)') AS expression
3121+
qq.c.value('@Expression', 'NVARCHAR(4000)') AS expression
31223122
FROM #query_plan AS qp
31233123
JOIN ##bou_BlitzCacheProcs AS b
31243124
ON (b.QueryType = 'adhoc' AND b.QueryHash = qp.QueryHash)
@@ -3175,32 +3175,35 @@ SELECT @@SPID AS SPID,
31753175
FROM #conversion_info AS ci
31763176
OPTION ( RECOMPILE );
31773177

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
3178+
3179+
3180+
RAISERROR(N'Updating variables inserted procs', 0, 1) WITH NOWAIT;
3181+
UPDATE sp
3182+
SET sp.variable_datatype = vi.variable_datatype,
3183+
sp.compile_time_value = vi.compile_time_value
3184+
FROM #stored_proc_info AS sp
3185+
JOIN #variable_info AS vi
3186+
ON (sp.proc_name = 'adhoc' AND sp.QueryHash = vi.QueryHash)
3187+
OR (sp.proc_name <> 'adhoc' AND sp.SqlHandle = vi.SqlHandle)
3188+
AND sp.variable_name = vi.variable_name
3189+
OPTION ( RECOMPILE );
3190+
3191+
3192+
RAISERROR(N'Inserting variables for other procs', 0, 1) WITH NOWAIT;
3193+
INSERT #stored_proc_info
3194+
( SPID, SqlHandle, QueryHash, variable_name, variable_datatype, compile_time_value, proc_name )
3195+
SELECT vi.SPID, vi.SqlHandle, vi.QueryHash, vi.variable_name, vi.variable_datatype, vi.compile_time_value, vi.proc_name
3196+
FROM #variable_info AS vi
3197+
WHERE NOT EXISTS
3198+
(
3199+
SELECT *
3200+
FROM #stored_proc_info AS sp
3201+
WHERE (sp.proc_name = 'adhoc' AND sp.QueryHash = vi.QueryHash)
3202+
OR (sp.proc_name <> 'adhoc' AND sp.SqlHandle = vi.SqlHandle)
3203+
AND sp.variable_name = vi.variable_name
3204+
)
3205+
OPTION ( RECOMPILE );
3206+
32043207

32053208
RAISERROR(N'Updating procs', 0, 1) WITH NOWAIT;
32063209
UPDATE s

sp_BlitzQueryStore.sql

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -772,13 +772,13 @@ CREATE TABLE #stored_proc_info
772772
(
773773
sql_handle VARBINARY(64),
774774
query_hash BINARY(8),
775-
variable_name NVARCHAR(128),
776-
variable_datatype NVARCHAR(128),
777-
converted_column_name NVARCHAR(128),
778-
compile_time_value NVARCHAR(128),
779-
proc_name NVARCHAR(300),
780-
column_name NVARCHAR(128),
781-
converted_to NVARCHAR(128)
775+
variable_name NVARCHAR(256),
776+
variable_datatype NVARCHAR(256),
777+
converted_column_name NVARCHAR(256),
778+
compile_time_value NVARCHAR(4000),
779+
proc_name NVARCHAR(1000),
780+
column_name NVARCHAR(256),
781+
converted_to NVARCHAR(256)
782782
INDEX tf_ix_ids CLUSTERED (sql_handle, query_hash)
783783
);
784784

@@ -788,9 +788,9 @@ CREATE TABLE #variable_info
788788
(
789789
query_hash BINARY(8),
790790
sql_handle VARBINARY(64),
791-
proc_name NVARCHAR(128),
792-
variable_name NVARCHAR(200),
793-
variable_datatype NVARCHAR(128),
791+
proc_name NVARCHAR(1000),
792+
variable_name NVARCHAR(256),
793+
variable_datatype NVARCHAR(256),
794794
compile_time_value NVARCHAR(4000),
795795
INDEX vif_ix_ids CLUSTERED (sql_handle, query_hash)
796796
);
@@ -2963,9 +2963,9 @@ IF EXISTS ( SELECT 1
29632963
qp.query_hash,
29642964
qp.sql_handle,
29652965
b.proc_or_function_name AS proc_name,
2966-
q.n.value('@Column', 'NVARCHAR(128)') AS variable_name,
2967-
q.n.value('@ParameterDataType', 'NVARCHAR(128)') AS variable_datatype,
2968-
q.n.value('@ParameterCompiledValue', 'NVARCHAR(1000)') AS compile_time_value
2966+
q.n.value('@Column', 'NVARCHAR(256)') AS variable_name,
2967+
q.n.value('@ParameterDataType', 'NVARCHAR(256)') AS variable_datatype,
2968+
q.n.value('@ParameterCompiledValue', 'NVARCHAR(4000)') AS compile_time_value
29692969
FROM #query_plan AS qp
29702970
JOIN #working_warnings AS b
29712971
ON (b.query_hash = qp.query_hash AND b.proc_or_function_name = 'adhoc')
@@ -2980,7 +2980,7 @@ IF EXISTS ( SELECT 1
29802980
qp.query_hash,
29812981
qp.sql_handle,
29822982
b.proc_or_function_name AS proc_name,
2983-
qq.c.value('@Expression', 'NVARCHAR(128)') AS expression
2983+
qq.c.value('@Expression', 'NVARCHAR(4000)') AS expression
29842984
FROM #query_plan AS qp
29852985
JOIN #working_warnings AS b
29862986
ON (b.query_hash = qp.query_hash AND b.proc_or_function_name = 'adhoc')
@@ -3034,32 +3034,32 @@ IF EXISTS ( SELECT 1
30343034
FROM #conversion_info AS ci
30353035
OPTION ( RECOMPILE );
30363036

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
3037+
RAISERROR(N'Updating variables inserted procs', 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.proc_name = 'adhoc' AND sp.query_hash = vi.query_hash)
3044+
OR (sp.proc_name <> 'adhoc' AND sp.sql_handle = vi.sql_handle)
3045+
AND sp.variable_name = vi.variable_name
3046+
OPTION ( RECOMPILE );
3047+
3048+
3049+
RAISERROR(N'Inserting variables for other procs', 0, 1) WITH NOWAIT;
3050+
INSERT #stored_proc_info
3051+
( sql_handle, query_hash, variable_name, variable_datatype, compile_time_value, proc_name )
3052+
SELECT vi.sql_handle, vi.query_hash, vi.variable_name, vi.variable_datatype, vi.compile_time_value, vi.proc_name
3053+
FROM #variable_info AS vi
3054+
WHERE NOT EXISTS
3055+
(
3056+
SELECT *
3057+
FROM #stored_proc_info AS sp
3058+
WHERE (sp.proc_name = 'adhoc' AND sp.query_hash = vi.query_hash)
3059+
OR (sp.proc_name <> 'adhoc' AND sp.sql_handle = vi.sql_handle)
3060+
AND sp.variable_name = vi.variable_name
3061+
)
3062+
OPTION ( RECOMPILE );
30633063

30643064
RAISERROR(N'Updating procs', 0, 1) WITH NOWAIT;
30653065
UPDATE s

0 commit comments

Comments
 (0)