Ver código fonte

v2.4.1.2

Improved Max Server Memory section to account for new, soon to be Microsoft's official documented recommendations;
Fixed PK violation in Index Health Analysis subsection;
Updated all docs and blog links;
Fixed Linked Server section (Thanks Petar Trbos);
Added Query Store configuration info for SQL 2016+ (Thanks Petar Trbos);
Added Automatic Tuning configuration info for SQL 2017+;
Added Automatic Tuning recommendations for SQL 2017+ (Thanks Petar Trbos and FifthMan);
Fixed Indexing per Table checks (Thanks FifthMan);
Added check for recommended trace flag 7412 on SQL 2016+;
Fixed new MaxDOP recommendation.
pmasl 6 anos atrás
pai
commit
ad8dc0f22b

Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
BPCheck/BPCheck.ipynb


+ 3 - 2
BPCheck/Changelog.txt

@@ -361,7 +361,7 @@ v2.4 - 03/31/2019 - Improved displayed information in missing index check (Thank
 						Added row count information on empty tables and tables without CL (Thanks Petar Trbos);
 						Disabled unsupported high VLF fix for Azure SQL Database Managed Instance (Thanks Jovan Popovic);
 						Improved MaxDOP section to account for new, soon to be Microsoft's official documented recommendations.
-v2.4.1 - 04/17/2019 - Improved Max Server Memory section to account for new, soon to be Microsoft's official documented recommendations;
+v2.4.1.2 - 04/17/2019 - Improved Max Server Memory section to account for new, soon to be Microsoft's official documented recommendations;
 						Fixed PK violation in Index Health Analysis subsection;
 						Updated all docs and blog links;
 						Fixed Linked Server section (Thanks Petar Trbos);
@@ -369,4 +369,5 @@ v2.4.1 - 04/17/2019 - Improved Max Server Memory section to account for new, soo
 						Added Automatic Tuning configuration info for SQL 2017+;
 						Added Automatic Tuning recommendations for SQL 2017+ (Thanks Petar Trbos and FifthMan);
 						Fixed Indexing per Table checks (Thanks FifthMan);
-						Added check for recommended trace flag 7412 on SQL 2016+.
+						Added check for recommended trace flag 7412 on SQL 2016+;
+						Fixed new MaxDOP recommendation.

+ 8 - 8
BPCheck/Check_BP_Servers.sql

@@ -1670,10 +1670,10 @@ SELECT @affined_cpus = COUNT(cpu_id) FROM sys.dm_os_schedulers WHERE is_online =
 --SELECT @cpucount = COUNT(cpu_id) FROM sys.dm_os_schedulers WHERE scheduler_id < 255 AND parent_node_id < 64
 SELECT 'Processor_checks' AS [Category], 'Parallelism_MaxDOP' AS [Check],
 	CASE WHEN [value] > @affined_cpus THEN '[WARNING: MaxDOP setting exceeds available processor count (affinity)]'
-		WHEN @numa = 1 AND @affined_cpus > 8 AND @affined_cpus <= 16 AND ([value] = 0 OR [value] < 8 OR [value] > 16) THEN '[WARNING: MaxDOP setting is not recommended for current processor count (affinity)]'
-		WHEN @numa = 1 AND @affined_cpus > 16 AND ([value] = 0 OR [value] > 16) THEN '[WARNING: MaxDOP setting is not recommended for current processor count (affinity)]'
-		WHEN @numa > 1 AND (@cpucount/@numa) <= 16 AND ([value] = 0 OR [value] > CEILING(@cpucount/@numa)) THEN '[WARNING: MaxDOP setting is not recommended for current NUMA node to processor count (affinity) ratio]'
-		WHEN @numa > 1 AND (@cpucount/@numa) > 16 AND ([value] = 0 OR [value] > CEILING(@cpucount/@numa)/2) THEN '[WARNING: MaxDOP setting is not recommended for current NUMA node to processor count (affinity) ratio]'
+		WHEN @numa = 1 AND @affined_cpus <= 16 AND ([value] = 0 OR [value] <> @affined_cpus) THEN '[WARNING: MaxDOP setting is not recommended for current processor count (affinity)]'
+		WHEN @numa = 1 AND @affined_cpus > 16 AND ([value] = 0 OR [value] <> 16) THEN '[WARNING: MaxDOP setting is not recommended for current processor count (affinity)]'
+		WHEN @numa > 1 AND (@cpucount/@numa) <= 16 AND ([value] = 0 OR [value] <> CEILING(@cpucount/@numa)) THEN '[WARNING: MaxDOP setting is not recommended for current NUMA node to processor count (affinity) ratio]'
+		WHEN @numa > 1 AND (@cpucount/@numa) > 16 AND ([value] = 0 OR [value] <> CEILING(@cpucount/@numa)/2) THEN '[WARNING: MaxDOP setting is not recommended for current NUMA node to processor count (affinity) ratio]'
 		ELSE '[OK]'
 	END AS [Deviation]
 FROM sys.configurations (NOLOCK) WHERE name = 'max degree of parallelism';
@@ -1681,13 +1681,13 @@ FROM sys.configurations (NOLOCK) WHERE name = 'max degree of parallelism';
 SELECT 'Processor_checks' AS [Category], 'Parallelism_MaxDOP' AS [Information], 
 	CASE 
 		-- If not NUMA, and up to 16 @affined_cpus then MaxDOP up to 16
-		WHEN @numa = 1 AND @affined_cpus > 8 AND @affined_cpus <= 16 AND ([value] = 0 OR [value] < 8 OR [value] >= 16) THEN @affined_cpus
+		WHEN @numa = 1 AND @affined_cpus <= 16 THEN @affined_cpus
 		-- If not NUMA, and more than 16 @affined_cpus then MaxDOP 16
-		WHEN @numa = 1 AND @affined_cpus > 16 AND ([value] = 0 OR [value] > 16) THEN 16
+		WHEN @numa = 1 AND @affined_cpus > 16 THEN 16
 		-- If NUMA and # logical CPUs per NUMA up to 16, then MaxDOP is set as # logical CPUs per NUMA, up to 16 
-		WHEN @numa > 1 AND (@cpucount/@numa) <= 16 AND ([value] = 0 OR [value] > (@cpucount/@numa)) THEN CEILING(@cpucount/@numa)
+		WHEN @numa > 1 AND (@cpucount/@numa) <= 16 THEN CEILING(@cpucount/@numa)
 		-- If NUMA and # logical CPUs per NUMA > 16, then MaxDOP is set as 1/2 of # logical CPUs per NUMA
-		WHEN @numa > 1 AND (@cpucount/@numa) > 16 AND ([value] = 0 OR [value] > CEILING((@cpucount/@numa)/2)) THEN CEILING((@cpucount/@numa)/2)
+		WHEN @numa > 1 AND (@cpucount/@numa) > 16 THEN CEILING((@cpucount/@numa)/2)
 		ELSE 0
 	END AS [Recommended_MaxDOP],
 	[value] AS [Current_MaxDOP], @cpucount AS [Available_Processors], @affined_cpus AS [Affined_Processors], 

+ 4 - 5
MaintenanceSolution/0_database_server_options.sql

@@ -51,14 +51,13 @@ SELECT @numa = COUNT(DISTINCT parent_node_id) FROM sys.dm_os_schedulers WHERE sc
 SELECT @sqlcmd = 'sp_configure ''max degree of parallelism'', ' + CONVERT(NVARCHAR(255), 
 		CASE 
 		-- If not NUMA, and up to 16 @affined_cpus then MaxDOP up to 16
-		WHEN @numa = 1 AND @affined_cpus > 8 AND @affined_cpus <= 16 AND ([value] = 0 OR [value] < 8 OR [value] >= 16) THEN @affined_cpus
+		WHEN @numa = 1 AND @affined_cpus <= 16 THEN @affined_cpus
 		-- If not NUMA, and more than 16 @affined_cpus then MaxDOP 16
-		WHEN @numa = 1 AND @affined_cpus > 16 AND ([value] = 0 OR [value] > 16) THEN 16
+		WHEN @numa = 1 AND @affined_cpus > 16 THEN 16
 		-- If NUMA and # logical CPUs per NUMA up to 16, then MaxDOP is set as # logical CPUs per NUMA, up to 16 
-		WHEN @numa > 1 AND (@cpucount/@numa) <= 16 AND ([value] = 0 OR [value] > (@cpucount/@numa)) THEN CEILING(@cpucount/@numa)
+		WHEN @numa > 1 AND (@cpucount/@numa) <= 16 THEN CEILING(@cpucount/@numa)
 		-- If NUMA and # logical CPUs per NUMA > 16, then MaxDOP is set as 1/2 of # logical CPUs per NUMA
-		WHEN @numa > 1 AND (@cpucount/@numa) > 16 AND ([value] = 0 OR [value] > CEILING((@cpucount/@numa)/2)) THEN CEILING((@cpucount/@numa)/2)
-		WHEN @numa = 0 AND [value] > @affined_cpus THEN @affined_cpus
+		WHEN @numa > 1 AND (@cpucount/@numa) > 16 THEN CEILING((@cpucount/@numa)/2)
 		ELSE 0
 	END)
 FROM sys.configurations (NOLOCK) WHERE name = 'max degree of parallelism';	

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff