Skip to content

Commit 8e1314e

Browse files
authored
Merge pull request BrentOzarULTD#3804 from erikdarlingdata/feature/sp_BlitzWho-code-review-fixes
sp_BlitzWho: Bug fixes from full code review
2 parents d5fac05 + 0364c73 commit 8e1314e

1 file changed

Lines changed: 10 additions & 14 deletions

File tree

‎sp_BlitzWho.sql‎

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ DECLARE @ProductVersion NVARCHAR(128) = CAST(SERVERPROPERTY('ProductVersion') A
9393
,@AzureSQLDB BIT = (SELECT CASE WHEN SERVERPROPERTY('EngineEdition') = 5 THEN 1 ELSE 0 END)
9494
,@EnhanceFlag BIT = 0
9595
,@BlockingCheck NVARCHAR(MAX)
96-
,@StringToSelect NVARCHAR(MAX)
9796
,@StringToExecute NVARCHAR(MAX)
9897
,@OutputTableCleanupDate DATE
9998
,@SessionWaits BIT = 0
@@ -107,7 +106,7 @@ DECLARE @ProductVersion NVARCHAR(128) = CAST(SERVERPROPERTY('ProductVersion') A
107106
WHERE waitwait.session_id = wait.session_id
108107
GROUP BY waitwait.wait_type
109108
HAVING SUM(waitwait.wait_time_ms) > 5
110-
ORDER BY 1
109+
ORDER BY SUM(waitwait.wait_time_ms) DESC
111110
FOR
112111
XML PATH('''') ) AS session_wait_info
113112
FROM sys.dm_exec_session_wait_stats AS wait ) AS wt2
@@ -291,28 +290,24 @@ IF @OutputDatabaseName IS NOT NULL AND @OutputSchemaName IS NOT NULL AND @Output
291290
EXEC(@StringToExecute);
292291

293292
/* If the table doesn't have the new cached_parameter_info computed column, add it. See Github #2842. */
294-
SET @ObjectFullName = @OutputDatabaseName + N'.' + @OutputSchemaName + N'.' + @OutputTableName;
295293
SET @StringToExecute = N'IF NOT EXISTS (SELECT * FROM ' + @OutputDatabaseName + N'.sys.all_columns
296294
WHERE object_id = (OBJECT_ID(''' + @ObjectFullName + N''')) AND name = ''cached_parameter_info'')
297295
ALTER TABLE ' + @ObjectFullName + N' ADD cached_parameter_info NVARCHAR(MAX) NULL;';
298296
EXEC(@StringToExecute);
299297

300298
/* If the table doesn't have the new live_parameter_info computed column, add it. See Github #2842. */
301-
SET @ObjectFullName = @OutputDatabaseName + N'.' + @OutputSchemaName + N'.' + @OutputTableName;
302299
SET @StringToExecute = N'IF NOT EXISTS (SELECT * FROM ' + @OutputDatabaseName + N'.sys.all_columns
303300
WHERE object_id = (OBJECT_ID(''' + @ObjectFullName + N''')) AND name = ''live_parameter_info'')
304301
ALTER TABLE ' + @ObjectFullName + N' ADD live_parameter_info NVARCHAR(MAX) NULL;';
305302
EXEC(@StringToExecute);
306303

307304
/* If the table doesn't have the new outer_command column, add it. See Github #2887. */
308-
SET @ObjectFullName = @OutputDatabaseName + N'.' + @OutputSchemaName + N'.' + @OutputTableName;
309305
SET @StringToExecute = N'IF NOT EXISTS (SELECT * FROM ' + @OutputDatabaseName + N'.sys.all_columns
310306
WHERE object_id = (OBJECT_ID(''' + @ObjectFullName + N''')) AND name = ''outer_command'')
311307
ALTER TABLE ' + @ObjectFullName + N' ADD outer_command NVARCHAR(4000) NULL;';
312308
EXEC(@StringToExecute);
313309

314310
/* If the table doesn't have the new wait_resource column, add it. See Github #2970. */
315-
SET @ObjectFullName = @OutputDatabaseName + N'.' + @OutputSchemaName + N'.' + @OutputTableName;
316311
SET @StringToExecute = N'IF NOT EXISTS (SELECT * FROM ' + @OutputDatabaseName + N'.sys.all_columns
317312
WHERE object_id = (OBJECT_ID(''' + @ObjectFullName + N''')) AND name = ''wait_resource'')
318313
ALTER TABLE ' + @ObjectFullName + N' ADD wait_resource NVARCHAR(MAX) NULL;';
@@ -894,7 +889,7 @@ BEGIN
894889
+ CASE WHEN @ShowSleepingSPIDs = 0 THEN
895890
N' AND COALESCE(DB_NAME(r.database_id), DB_NAME(blocked.dbid)) IS NOT NULL'
896891
WHEN @ShowSleepingSPIDs = 1 THEN
897-
N' OR COALESCE(r.open_transaction_count, blocked.open_tran) >= 1'
892+
N' AND (COALESCE(DB_NAME(r.database_id), DB_NAME(blocked.dbid)) IS NOT NULL OR COALESCE(r.open_transaction_count, blocked.open_tran) >= 1)'
898893
ELSE N'' END;
899894
END /* IF @ProductVersionMajor > 9 and @ProductVersionMajor < 11 */
900895

@@ -1195,12 +1190,12 @@ IF @ProductVersionMajor >= 11
11951190
11961191
WHERE s.session_id <> @@SPID
11971192
AND s.host_name IS NOT NULL
1198-
AND r.database_id NOT IN (SELECT database_id FROM #WhoReadableDBs)
1193+
AND (r.database_id IS NULL OR r.database_id NOT IN (SELECT database_id FROM #WhoReadableDBs))
11991194
'
12001195
+ CASE WHEN @ShowSleepingSPIDs = 0 THEN
12011196
N' AND COALESCE(DB_NAME(r.database_id), DB_NAME(blocked.dbid)) IS NOT NULL'
12021197
WHEN @ShowSleepingSPIDs = 1 THEN
1203-
N' OR COALESCE(r.open_transaction_count, blocked.open_tran) >= 1'
1198+
N' AND (COALESCE(DB_NAME(r.database_id), DB_NAME(blocked.dbid)) IS NOT NULL OR COALESCE(r.open_transaction_count, blocked.open_tran) >= 1)'
12041199
ELSE N'' END;
12051200

12061201

@@ -1378,11 +1373,12 @@ ELSE
13781373
SET @StringToExecute = @BlockingCheck + N' SELECT GETDATE() AS run_date , ' + @StringToExecute;
13791374

13801375
/* If the server has > 50GB of memory, add a max grant hint to avoid getting a giant grant */
1381-
IF (@ProductVersionMajor = 11 AND @ProductVersionMinor >= 6020)
1382-
OR (@ProductVersionMajor = 12 AND @ProductVersionMinor >= 5000 )
1383-
OR (@ProductVersionMajor >= 13 )
1384-
AND 50000000 < (SELECT cntr_value
1385-
FROM sys.dm_os_performance_counters
1376+
IF ( (@ProductVersionMajor = 11 AND @ProductVersionMinor >= 6020)
1377+
OR (@ProductVersionMajor = 12 AND @ProductVersionMinor >= 5000 )
1378+
OR (@ProductVersionMajor >= 13 )
1379+
)
1380+
AND 50000000 < (SELECT cntr_value
1381+
FROM sys.dm_os_performance_counters
13861382
WHERE object_name LIKE '%:Memory Manager%'
13871383
AND counter_name LIKE 'Target Server Memory (KB)%')
13881384
BEGIN

0 commit comments

Comments
 (0)