Skip to content

Commit 013e89e

Browse files
authored
Merge pull request #2325 from BrentOzarULTD/202003_releaseprep
2020_03 release prep
2 parents cf1b5fb + 762cf1b commit 013e89e

17 files changed

+416
-91
lines changed

Install-All-Scripts.sql

Lines changed: 138 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ SET NOCOUNT ON;
3030
BEGIN;
3131

3232

33-
SELECT @Version = '3.93', @VersionDate = '20200217';
33+
SELECT @Version = '3.94', @VersionDate = '20200324';
3434

3535
IF(@VersionCheckMode = 1)
3636
BEGIN
@@ -804,6 +804,7 @@ LogShamer:
804804
AND bw.is_completed = 1
805805
AND bw.last_log_backup_start_time < DATEADD(SECOND, (@rpo * -1), GETDATE())
806806
AND (bw.error_number IS NULL OR bw.error_number > 0) /* negative numbers indicate human attention required */
807+
AND bw.ignore_database = 0
807808
)
808809
OR
809810
( /*This section picks up newly added databases by Pollster*/
@@ -812,6 +813,7 @@ LogShamer:
812813
AND bw.last_log_backup_start_time = '1900-01-01 00:00:00.000'
813814
AND bw.last_log_backup_finish_time = '9999-12-31 00:00:00.000'
814815
AND (bw.error_number IS NULL OR bw.error_number > 0) /* negative numbers indicate human attention required */
816+
AND bw.ignore_database = 0
815817
)
816818
ORDER BY bw.last_log_backup_start_time ASC, bw.last_log_backup_finish_time ASC, bw.database_name ASC;
817819

@@ -1522,7 +1524,7 @@ SET NOCOUNT ON;
15221524

15231525
BEGIN;
15241526

1525-
SELECT @Version = '3.93', @VersionDate = '20200217';
1527+
SELECT @Version = '3.94', @VersionDate = '20200324';
15261528

15271529
IF(@VersionCheckMode = 1)
15281530
BEGIN
@@ -2846,7 +2848,7 @@ AS
28462848
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
28472849

28482850

2849-
SELECT @Version = '7.93', @VersionDate = '20200217';
2851+
SELECT @Version = '7.94', @VersionDate = '20200324';
28502852
SET @OutputType = UPPER(@OutputType);
28512853

28522854
IF(@VersionCheckMode = 1)
@@ -2989,6 +2991,7 @@ AS
29892991
,@CurrentComponentVersionCheckModeOK BIT
29902992
,@canExitLoop BIT
29912993
,@frkIsConsistent BIT
2994+
,@NeedToTurnNumericRoundabortBackOn BIT;
29922995

29932996
/* End of declarations for First Responder Kit consistency check:*/
29942997
;
@@ -3003,7 +3006,25 @@ AS
30033006

30043007
IF @DaysUptime = 0
30053008
SET @DaysUptime = .01;
3006-
3009+
3010+
/*
3011+
Set the session state of Numeric_RoundAbort to off if any databases have Numeric Round-Abort enabled.
3012+
Stops arithmetic overflow errors during data conversion. See Github issue #2302 for more info.
3013+
*/
3014+
IF ( (8192 & @@OPTIONS) = 8192 ) /* Numeric RoundAbort is currently on, so we may need to turn it off temporarily */
3015+
BEGIN
3016+
IF EXISTS (SELECT 1
3017+
FROM sys.databases
3018+
WHERE is_numeric_roundabort_on = 1) /* A database has it turned on */
3019+
BEGIN
3020+
SET @NeedToTurnNumericRoundabortBackOn = 1;
3021+
SET NUMERIC_ROUNDABORT OFF;
3022+
END;
3023+
END;
3024+
3025+
3026+
3027+
30073028
/*
30083029
--TOURSTOP01--
30093030
See https://www.BrentOzar.com/go/blitztour for a guided tour.
@@ -3663,7 +3684,7 @@ AS
36633684

36643685
IF @Debug IN (1, 2) RAISERROR('Running CheckId [%d].', 0, 1, 1) WITH NOWAIT;
36653686

3666-
IF SERVERPROPERTY('EngineName') <> 8 /* Azure Managed Instances need a special query */
3687+
IF SERVERPROPERTY('EngineEdition') <> 8 /* Azure Managed Instances need a special query */
36673688
BEGIN
36683689
INSERT INTO #BlitzResults
36693690
( CheckID ,
@@ -11834,6 +11855,13 @@ IF @ProductVersionMajor >= 10 AND NOT EXISTS ( SELECT 1
1183411855

1183511856
END; /* ELSE -- IF @OutputType = 'SCHEMA' */
1183611857

11858+
/*
11859+
Reset the Nmumeric_RoundAbort session state back to enabled if it was disabled earlier.
11860+
See Github issue #2302 for more info.
11861+
*/
11862+
IF @NeedToTurnNumericRoundabortBackOn = 1
11863+
SET NUMERIC_ROUNDABORT ON;
11864+
1183711865
SET NOCOUNT OFF;
1183811866
GO
1183911867

@@ -11872,7 +11900,7 @@ AS
1187211900
SET NOCOUNT ON;
1187311901
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
1187411902

11875-
SELECT @Version = '3.93', @VersionDate = '20200217';
11903+
SELECT @Version = '3.94', @VersionDate = '20200324';
1187611904

1187711905
IF(@VersionCheckMode = 1)
1187811906
BEGIN
@@ -13649,7 +13677,7 @@ BEGIN
1364913677
SET NOCOUNT ON;
1365013678
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
1365113679

13652-
SELECT @Version = '7.93', @VersionDate = '20200217';
13680+
SELECT @Version = '7.94', @VersionDate = '20200324';
1365313681

1365413682

1365513683
IF(@VersionCheckMode = 1)
@@ -14919,7 +14947,7 @@ SELECT CONVERT(DECIMAL(3,2), NULLIF(x.plans_24, 0) / (1. * NULLIF(x.total_plans,
1491914947
x.total_plans,
1492014948
@@SPID AS SPID
1492114949
FROM x
14922-
OPTION (RECOMPILE) ;
14950+
OPTION (RECOMPILE);
1492314951

1492414952

1492514953
SET @OnlySqlHandles = LTRIM(RTRIM(@OnlySqlHandles)) ;
@@ -18394,6 +18422,77 @@ IF @Debug = 1
1839418422

1839518423
EXEC sp_executesql @sql, N'@Top INT, @spid INT, @minimumExecutionCount INT, @min_back INT', @Top, @@SPID, @MinimumExecutionCount, @MinutesBack;
1839618424

18425+
18426+
/*
18427+
18428+
This section will check if:
18429+
* >= 30% of plans were created in the last hour
18430+
* Check on the memory_clerks DMV for space used by TokenAndPermUserStore
18431+
* Compare that to the size of the buffer pool
18432+
* If it's >10%,
18433+
*/
18434+
IF EXISTS
18435+
(
18436+
SELECT 1/0
18437+
FROM #plan_creation AS pc
18438+
WHERE pc.percent_1 >= 30
18439+
)
18440+
BEGIN
18441+
18442+
DECLARE @user_perm_sql NVARCHAR(MAX) = N'';
18443+
DECLARE @user_perm_gb_out DECIMAL(10,2);
18444+
DECLARE @common_version DECIMAL(10,2);
18445+
DECLARE @buffer_pool_memory_gb DECIMAL(10,2);
18446+
DECLARE @user_perm_percent DECIMAL(10,2);
18447+
DECLARE @is_tokenstore_big BIT = 0;
18448+
18449+
18450+
SELECT @buffer_pool_memory_gb = ( COUNT_BIG(*) * 8.0 ) / 1024. / 1024.
18451+
FROM sys.dm_os_buffer_descriptors;
18452+
18453+
SELECT @common_version =
18454+
CONVERT(DECIMAL(10,2), c.common_version)
18455+
FROM #checkversion AS c;
18456+
18457+
IF @common_version >= 11
18458+
BEGIN
18459+
SET @user_perm_sql += N'
18460+
SELECT @user_perm_gb = CASE WHEN (pages_kb / 128.0 / 1024.) >= 2.
18461+
THEN CONVERT(DECIMAL(38, 2), (pages_kb / 128.0 / 1024.))
18462+
ELSE 0
18463+
END
18464+
FROM sys.dm_os_memory_clerks
18465+
WHERE type = ''USERSTORE_TOKENPERM''
18466+
AND name = ''TokenAndPermUserStore'';';
18467+
END;
18468+
18469+
IF @common_version < 11
18470+
BEGIN
18471+
SET @user_perm_sql += N'
18472+
SELECT @user_perm_gb = CASE WHEN ((single_pages_kb + multi_pages_kb) / 1024.0 / 1024.) >= 2.
18473+
THEN CONVERT(DECIMAL(38, 2), ((single_pages_kb + multi_pages_kb) / 1024.0 / 1024.))
18474+
ELSE 0
18475+
END
18476+
FROM sys.dm_os_memory_clerks
18477+
WHERE type = ''USERSTORE_TOKENPERM''
18478+
AND name = ''TokenAndPermUserStore'';';
18479+
END;
18480+
18481+
EXEC sys.sp_executesql @user_perm_sql,
18482+
N'@user_perm_gb DECIMAL(10,2) OUTPUT',
18483+
@user_perm_gb = @user_perm_gb_out OUTPUT;
18484+
18485+
18486+
IF (@user_perm_gb_out / (1. * @buffer_pool_memory_gb)) * 100. >= 10
18487+
BEGIN
18488+
SET @is_tokenstore_big = 1;
18489+
SET @user_perm_percent = (@user_perm_gb_out / (1. * @buffer_pool_memory_gb)) * 100.;
18490+
END
18491+
18492+
END
18493+
18494+
18495+
1839718496
IF @HideSummary = 0 AND @ExportToExcel = 0
1839818497
BEGIN
1839918498
IF @Reanalyze = 0
@@ -19336,7 +19435,18 @@ BEGIN
1933619435
'https://www.brentozar.com/archive/2018/07/tsql2sday-how-much-plan-cache-history-do-you-have/',
1933719436
'If these percentages are high, it may be a sign of memory pressure or plan cache instability.'
1933819437
FROM #plan_creation p ;
19339-
19438+
19439+
IF @is_tokenstore_big = 1
19440+
INSERT INTO ##BlitzCacheResults (SPID, CheckID, Priority, FindingsGroup, Finding, URL, Details)
19441+
SELECT @@SPID,
19442+
69,
19443+
10,
19444+
N'Large USERSTORE_TOKENPERM cache: ' + CONVERT(NVARCHAR(11), @user_perm_gb_out) + N'GB',
19445+
N'The USERSTORE_TOKENPERM is taking up ' + CONVERT(NVARCHAR(11), @user_perm_percent)
19446+
+ N'% of the buffer pool, and your plan cache seems to be unstable',
19447+
N'https://brentozar.com/go/userstore',
19448+
N'A growing USERSTORE_TOKENPERM cache can cause the plan cache to clear out'
19449+
1934019450
IF @v >= 11
1934119451
BEGIN
1934219452
IF EXISTS (SELECT 1/0
@@ -20231,7 +20341,7 @@ BEGIN
2023120341
SET NOCOUNT ON;
2023220342
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
2023320343

20234-
SELECT @Version = '7.93', @VersionDate = '20200217';
20344+
SELECT @Version = '7.94', @VersionDate = '20200324';
2023520345

2023620346
IF(@VersionCheckMode = 1)
2023720347
BEGIN
@@ -21183,8 +21293,9 @@ BEGIN
2118321293
WHERE CHARINDEX(',', @FilterPlansByDatabase, t + 1) > 0
2118421294
)
2118521295
INSERT #FilterPlansByDatabase (DatabaseID)
21186-
SELECT SUBSTRING(@FilterPlansByDatabase, f, t - f)
21296+
SELECT DISTINCT db.database_id
2118721297
FROM a
21298+
INNER JOIN sys.databases db ON LTRIM(RTRIM(SUBSTRING(@FilterPlansByDatabase, a.f, a.t - a.f))) = db.name
2118821299
WHERE SUBSTRING(@FilterPlansByDatabase, f, t - f) IS NOT NULL
2118921300
OPTION (MAXRECURSION 0);
2119021301
END;
@@ -24364,7 +24475,7 @@ AS
2436424475
SET NOCOUNT ON;
2436524476
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
2436624477

24367-
SELECT @Version = '7.93', @VersionDate = '20200217';
24478+
SELECT @Version = '7.94', @VersionDate = '20200324';
2436824479
SET @OutputType = UPPER(@OutputType);
2436924480

2437024481
IF(@VersionCheckMode = 1)
@@ -29546,7 +29657,7 @@ BEGIN
2954629657
SET NOCOUNT ON;
2954729658
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
2954829659

29549-
SELECT @Version = '2.93', @VersionDate = '20200217';
29660+
SELECT @Version = '2.94', @VersionDate = '20200324';
2955029661

2955129662

2955229663
IF(@VersionCheckMode = 1)
@@ -30201,6 +30312,12 @@ You need to use an Azure storage account, and the path has to look like this: ht
3020130312
step_name NVARCHAR(256);
3020230313

3020330314
IF SERVERPROPERTY('EngineEdition') NOT IN (5, 6) /* Azure SQL DB doesn't support querying jobs */
30315+
AND NOT (LEFT(CAST(SERVERPROPERTY('ComputerNamePhysicalNetBIOS') AS VARCHAR(8000)), 8) = 'EC2AMAZ-' /* Neither does Amazon RDS Express Edition */
30316+
AND LEFT(CAST(SERVERPROPERTY('MachineName') AS VARCHAR(8000)), 8) = 'EC2AMAZ-'
30317+
AND LEFT(CAST(SERVERPROPERTY('ServerName') AS VARCHAR(8000)), 8) = 'EC2AMAZ-'
30318+
AND db_id('rdsadmin') IS NOT NULL
30319+
AND EXISTS(SELECT * FROM master.sys.all_objects WHERE name IN ('rds_startup_tasks', 'rds_help_revlogin', 'rds_hexadecimal', 'rds_failover_tracking', 'rds_database_tracking', 'rds_track_change'))
30320+
)
3020430321
BEGIN
3020530322
SET @StringToExecute = N'UPDATE aj
3020630323
SET aj.job_name = j.name,
@@ -30989,8 +31106,8 @@ ELSE --Output to database is not set output to client app
3098931106
caw.waiting_to_close AS waiter_waiting_to_close,
3099031107
dp.deadlock_graph
3099131108
FROM #deadlock_process AS dp
30992-
CROSS APPLY (SELECT TOP 1 * FROM #deadlock_resource_parallel AS drp WHERE drp.owner_id = dp.id AND drp.wait_type = 'e_waitPipeNewRow' ORDER BY drp.event_date) AS cao
30993-
CROSS APPLY (SELECT TOP 1 * FROM #deadlock_resource_parallel AS drp WHERE drp.owner_id = dp.id AND drp.wait_type = 'e_waitPipeGetRow' ORDER BY drp.event_date) AS caw
31109+
OUTER APPLY (SELECT TOP 1 * FROM #deadlock_resource_parallel AS drp WHERE drp.owner_id = dp.id AND drp.wait_type = 'e_waitPipeNewRow' ORDER BY drp.event_date) AS cao
31110+
OUTER APPLY (SELECT TOP 1 * FROM #deadlock_resource_parallel AS drp WHERE drp.owner_id = dp.id AND drp.wait_type = 'e_waitPipeGetRow' ORDER BY drp.event_date) AS caw
3099431111
WHERE dp.victim_id IS NULL
3099531112
AND dp.login_name IS NOT NULL
3099631113
)
@@ -31150,7 +31267,7 @@ BEGIN /*First BEGIN*/
3115031267
SET NOCOUNT ON;
3115131268
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
3115231269

31153-
SELECT @Version = '3.93', @VersionDate = '20200217';
31270+
SELECT @Version = '3.94', @VersionDate = '20200324';
3115431271
IF(@VersionCheckMode = 1)
3115531272
BEGIN
3115631273
RETURN;
@@ -36876,7 +36993,7 @@ BEGIN
3687636993
SET NOCOUNT ON;
3687736994
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
3687836995

36879-
SELECT @Version = '7.93', @VersionDate = '20200217';
36996+
SELECT @Version = '7.94', @VersionDate = '20200324';
3688036997

3688136998
IF(@VersionCheckMode = 1)
3688236999
BEGIN
@@ -37158,11 +37275,7 @@ BEGIN
3715837275
/* Think of the StringToExecute as starting with this, but we'll set this up later depending on whether we're doing an insert or a select:
3715937276
SELECT @StringToExecute = N'SELECT GETDATE() AS run_date ,
3716037277
*/
37161-
SET @StringToExecute = N'COALESCE(
37162-
CONVERT(VARCHAR(20), (ABS(r.total_elapsed_time) / 1000) / 86400) + '':'' + CONVERT(VARCHAR(20), DATEADD(SECOND, (r.total_elapsed_time / 1000), 0), 114) ,
37163-
CONVERT(VARCHAR(20), DATEDIFF(SECOND, s.last_request_start_time, GETDATE()) / 86400) + '':''
37164-
+ CONVERT(VARCHAR(20), DATEADD(SECOND, DATEDIFF(SECOND, s.last_request_start_time, GETDATE()), 0), 114)
37165-
) AS [elapsed_time] ,
37278+
SET @StringToExecute = N'COALESCE( CONVERT(VARCHAR(20), (ABS(r.total_elapsed_time) / 1000) / 86400) + '':'' + CONVERT(VARCHAR(20), (DATEADD(SECOND, (r.total_elapsed_time / 1000), 0) + DATEADD(MILLISECOND, (r.total_elapsed_time % 1000), 0)), 114), CONVERT(VARCHAR(20), DATEDIFF(SECOND, s.last_request_start_time, GETDATE()) / 86400) + '':'' + CONVERT(VARCHAR(20), DATEADD(SECOND, DATEDIFF(SECOND, s.last_request_start_time, GETDATE()), 0), 114) ) AS [elapsed_time] ,
3716637279
s.session_id ,
3716737280
COALESCE(DB_NAME(r.database_id), DB_NAME(blocked.dbid), ''N/A'') AS database_name,
3716837281
ISNULL(SUBSTRING(dest.text,
@@ -37351,11 +37464,7 @@ IF @ProductVersionMajor >= 11
3735137464
/* Think of the StringToExecute as starting with this, but we'll set this up later depending on whether we're doing an insert or a select:
3735237465
SELECT @StringToExecute = N'SELECT GETDATE() AS run_date ,
3735337466
*/
37354-
SELECT @StringToExecute = N' COALESCE(
37355-
CONVERT(VARCHAR(20), (ABS(r.total_elapsed_time) / 1000) / 86400) + '':'' + CONVERT(VARCHAR(20), DATEADD(SECOND, (r.total_elapsed_time / 1000), 0), 114) ,
37356-
CONVERT(VARCHAR(20), DATEDIFF(SECOND, s.last_request_start_time, GETDATE()) / 86400) + '':''
37357-
+ CONVERT(VARCHAR(20), DATEADD(SECOND, DATEDIFF(SECOND, s.last_request_start_time, GETDATE()), 0), 114)
37358-
) AS [elapsed_time] ,
37467+
SELECT @StringToExecute = N'COALESCE( CONVERT(VARCHAR(20), (ABS(r.total_elapsed_time) / 1000) / 86400) + '':'' + CONVERT(VARCHAR(20), (DATEADD(SECOND, (r.total_elapsed_time / 1000), 0) + DATEADD(MILLISECOND, (r.total_elapsed_time % 1000), 0)), 114), CONVERT(VARCHAR(20), DATEDIFF(SECOND, s.last_request_start_time, GETDATE()) / 86400) + '':'' + CONVERT(VARCHAR(20), DATEADD(SECOND, DATEDIFF(SECOND, s.last_request_start_time, GETDATE()), 0), 114) ) AS [elapsed_time] ,
3735937468
s.session_id ,
3736037469
COALESCE(DB_NAME(r.database_id), DB_NAME(blocked.dbid), ''N/A'') AS database_name,
3736137470
ISNULL(SUBSTRING(dest.text,
@@ -37797,7 +37906,7 @@ SET NOCOUNT ON;
3779737906

3779837907
/*Versioning details*/
3779937908

37800-
SELECT @Version = '7.93', @VersionDate = '20200217';
37909+
SELECT @Version = '7.94', @VersionDate = '20200324';
3780137910

3780237911
IF(@VersionCheckMode = 1)
3780337912
BEGIN
@@ -39023,7 +39132,7 @@ AS
3902339132
BEGIN
3902439133
SET NOCOUNT ON;
3902539134

39026-
SELECT @Version = '2.93', @VersionDate = '20200217';
39135+
SELECT @Version = '2.94', @VersionDate = '20200324';
3902739136

3902839137
IF(@VersionCheckMode = 1)
3902939138
BEGIN

0 commit comments

Comments
 (0)