From a565c62cea5bed225ad6136db079128fd5d573f2 Mon Sep 17 00:00:00 2001
From: JosephPilov-msft <23519517+PiJoCoder@users.noreply.github.com>
Date: Thu, 18 Apr 2024 09:56:22 -0500
Subject: [PATCH 1/5] Add rowset for missing msi/msp files #336
---
RowsetImportEngine/TextRowsets.xml | 9 +++++++++
sqlnexus/TextRowsets.xml | 9 +++++++++
2 files changed, 18 insertions(+)
diff --git a/RowsetImportEngine/TextRowsets.xml b/RowsetImportEngine/TextRowsets.xml
index e4d4e4b..7593ec1 100644
--- a/RowsetImportEngine/TextRowsets.xml
+++ b/RowsetImportEngine/TextRowsets.xml
@@ -4348,6 +4348,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/sqlnexus/TextRowsets.xml b/sqlnexus/TextRowsets.xml
index e4d4e4b..7593ec1 100644
--- a/sqlnexus/TextRowsets.xml
+++ b/sqlnexus/TextRowsets.xml
@@ -4348,6 +4348,15 @@
+
+
+
+
+
+
+
+
+
From 6b236b16bce964c0c58ed11333bfe8431851f91b Mon Sep 17 00:00:00 2001
From: JosephPilov-msft <23519517+PiJoCoder@users.noreply.github.com>
Date: Thu, 18 Apr 2024 17:50:41 -0500
Subject: [PATCH 2/5] #336 fixed table name + added Best practices rule
---
RowsetImportEngine/TextRowsets.xml | 2 +-
sqlnexus/PerfStatsAnalysis.sql | 139 ++++++++++++++++++++---------
sqlnexus/TextRowsets.xml | 2 +-
3 files changed, 99 insertions(+), 44 deletions(-)
diff --git a/RowsetImportEngine/TextRowsets.xml b/RowsetImportEngine/TextRowsets.xml
index 7593ec1..e514c5a 100644
--- a/RowsetImportEngine/TextRowsets.xml
+++ b/RowsetImportEngine/TextRowsets.xml
@@ -4349,7 +4349,7 @@
-
+
diff --git a/sqlnexus/PerfStatsAnalysis.sql b/sqlnexus/PerfStatsAnalysis.sql
index 500bddb..8260148 100644
--- a/sqlnexus/PerfStatsAnalysis.sql
+++ b/sqlnexus/PerfStatsAnalysis.sql
@@ -4559,6 +4559,28 @@ VALUES
'Common Criteria Compliance Enabled', 'Enabling this can cause performance issues', '',
'https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/common-criteria-compliance-enabled-server-configuration-option?view=sql-server-ver16',
' ', 1, 100, 0, 'Server Configuration');
+INSERT INTO dbo.tbl_AnalysisSummary
+(
+ SolutionSourceId,
+ Category,
+ Type,
+ TypeDesc,
+ Name,
+ FriendlyName,
+ Description,
+ InternalUrl,
+ ExternalUrl,
+ Author,
+ Priority,
+ SeqNum,
+ Status,
+ Report
+)
+VALUES
+('E57F6CE6-EFCC-48B0-B82A-373ED6DF3434', 'Setup', 'W', 'Warning', 'usp_MissingMSI_MSP',
+ 'Missing installation MSI/MSPs on the system', 'These can cause various CU/SP upgrade error messages or unexpected behaviors', '',
+ 'https://learn.microsoft.com/en-us/troubleshoot/sql/database-engine/install/windows/restore-missing-windows-installer-cache-files',
+ ' ', 1, 100, 0, 'Missing MSI or MSPs');
@@ -5551,7 +5573,7 @@ BEGIN
END;
GO
-CREATE PROCEDURE usp_DBMEndPointState
+CREATE PROCEDURE dbo.usp_DBMEndPointState
AS
BEGIN
DECLARE @hadr_endpoint VARCHAR(128),
@@ -5583,7 +5605,7 @@ BEGIN
END;
GO
-CREATE PROCEDURE usp_HugeGrant
+CREATE PROCEDURE dbo.usp_HugeGrant
AS
BEGIN
DECLARE @cnt INT,
@@ -5620,7 +5642,7 @@ END;
GO
-CREATE PROCEDURE Optimizer_Memory_Leak
+CREATE PROCEDURE dbo.Optimizer_Memory_Leak
AS
BEGIN
DECLARE @SQLVersion VARCHAR(100);
@@ -7117,7 +7139,38 @@ BEGIN
BEGIN
UPDATE dbo.tbl_AnalysisSummary
SET [Status] = 1
- WHERE Name = 'usp_CCC_Enabled';
+ WHERE [Name] = OBJECT_NAME(@@PROCID);
+ END;
+ END;
+END;
+GO
+
+CREATE PROCEDURE [dbo].[usp_MissingMSI_MSP]
+AS
+BEGIN
+ IF (
+ OBJECT_ID('tbl_setup_missing_msi_msp_packages') IS NOT NULL
+ AND (OBJECT_ID('tbl_AnalysisSummary') IS NOT NULL)
+ )
+ BEGIN
+ IF (
+ (
+ SELECT COUNT(*)
+ FROM [dbo].[tbl_setup_missing_msi_msp_packages]
+ ) > 0
+ )
+ BEGIN
+
+ DECLARE @InstCacheFiles VARCHAR(8000)
+ SELECT @InstCacheFiles = COALESCE(@InstCacheFiles + CHAR(13) + CHAR(10) , '') + ISNULL([ExpectedInstallerCacheFile], '')
+ FROM dbo.tbl_setup_missing_msi_msp_packages
+
+
+ UPDATE dbo.tbl_AnalysisSummary
+ SET [Status] = 1,
+ [Description] = 'The following SQL Server MSI/MSPs are missing from the system. These can cause various CU or SP upgrade issues or unexpected behaviors: '
+ + CHAR(13) + CHAR(10) + @InstCacheFiles + CHAR(13) + CHAR(10) + 'Be sure to use the linked article to resolve the missing MSI/MSP issues.'
+ WHERE [Name] = OBJECT_NAME(@@PROCID);
END;
END;
END;
@@ -7129,89 +7182,91 @@ GO
firing rules
********************************************************/
-EXEC usp_AttendtionCausedBlocking;
+EXEC dbo.usp_AttendtionCausedBlocking;
GO
-EXEC usp_PerfScriptsRunningLong;
+EXEC dbo.usp_PerfScriptsRunningLong;
GO
-EXEC usp_LongAutoUpdateStats;
+EXEC dbo.usp_LongAutoUpdateStats;
GO
-EXEC usp_HighStmtCount;
+EXEC dbo.usp_HighStmtCount;
GO
-EXEC usp_RG_Idle;
+EXEC dbo.usp_RG_Idle;
GO
-EXEC usp_HighCompile;
+EXEC dbo.usp_HighCompile;
GO
-EXEC usp_HighCacheCount;
+EXEC dbo.usp_HighCacheCount;
GO
-EXEC proc_PowerPlan;
+EXEC dbo.proc_PowerPlan;
GO
-EXEC proc_CheckTraceFlags;
+EXEC dbo.proc_CheckTraceFlags;
GO
-EXEC proc_AutoStats;
+EXEC dbo.proc_AutoStats;
GO
-EXEC proc_ConfigAlert;
+EXEC dbo.proc_ConfigAlert;
GO
-EXEC usp_ExcessiveLockXevent;
+EXEC dbo.usp_ExcessiveLockXevent;
GO
-EXEC usp_McAFee_Intrusion;
+EXEC dbo.usp_McAFee_Intrusion;
GO
-EXEC usp_BatchSort;
+EXEC dbo.usp_BatchSort;
GO
EXEC dbo.usp_OptimizerTimeout;
GO
-EXEC usp_SmallSampledStats;
+EXEC dbo.usp_SmallSampledStats;
GO
-EXEC usp_DisabledIndex;
+EXEC dbo.usp_DisabledIndex;
GO
-EXEC usp_AccessCheck;
+EXEC dbo.usp_AccessCheck;
GO
-EXEC usp_RedoThreadBlocked;
+EXEC dbo.usp_RedoThreadBlocked;
GO
-EXEC usp_VirtualBytesLeak;
+EXEC dbo.usp_VirtualBytesLeak;
GO
-EXEC usp_ChangeTableCauseHighCPU;
+EXEC dbo.usp_ChangeTableCauseHighCPU;
GO
EXEC dbo.usp_DeadlockTraceFlag;
GO
-EXEC usp_Expensive_TraceEvts_Used;
+EXEC dbo.usp_Expensive_TraceEvts_Used;
GO
EXEC usp_Expensive_XEvts_Used;
GO
-EXEC usp_ExcessiveTrace_Warning;
+EXEC dbo.usp_ExcessiveTrace_Warning;
GO
-EXEC OracleLinkedServerIssue;
+EXEC dbo.OracleLinkedServerIssue;
GO
-EXEC XEventcrash;
+EXEC dbo.XEventcrash;
GO
-EXEC usp_Non_SQL_CPU_consumption;
+EXEC dbo.usp_Non_SQL_CPU_consumption;
GO
-EXEC usp_KernelHighCPUconsumption;
+EXEC dbo.usp_KernelHighCPUconsumption;
GO
-EXEC usp_SQLHighCPUconsumption;
+EXEC dbo.usp_SQLHighCPUconsumption;
GO
-EXEC StaleStatswarning2008;
+EXEC dbo.StaleStatswarning2008;
GO
EXEC dbo.usp_IOAnalysis;
GO
-EXEC usp_WarnmissingIndex;
+EXEC dbo.usp_WarnmissingIndex;
GO
-EXEC Optimizer_Memory_Leak;
+EXEC dbo.Optimizer_Memory_Leak;
GO
EXEC dbo.usp_HugeGrant;
GO
-EXEC usp_HighRecompiles;
+EXEC dbo.usp_HighRecompiles;
+GO
+EXEC dbo.usp_oldce;
GO
-EXEC usp_oldce;
+EXEC dbo.usp_CalvsCore;
GO
-EXEC usp_CalvsCore;
+EXEC dbo.usp_Spinlock_HighCPU;
GO
-EXEC usp_Spinlock_HighCPU;
+EXEC dbo.usp_NonMS_LoadedModules;
GO
-EXEC usp_NonMS_LoadedModules;
+EXEC dbo.usp_DBMEndPointState;
GO
-EXEC usp_DBMEndPointState;
+EXEC dbo.usp_AGHealthState;
GO
-EXEC usp_AGHealthState;
+EXEC dbo.usp_CCC_Enabled;
GO
-EXEC usp_CCC_Enabled;
+EXEC dbo.usp_MissingMSI_MSP
/******END of script***/
\ No newline at end of file
diff --git a/sqlnexus/TextRowsets.xml b/sqlnexus/TextRowsets.xml
index 7593ec1..e514c5a 100644
--- a/sqlnexus/TextRowsets.xml
+++ b/sqlnexus/TextRowsets.xml
@@ -4349,7 +4349,7 @@
-
+
From 0e64ef78b86279da1ee9f84908362420f12384ad Mon Sep 17 00:00:00 2001
From: JosephPilov-msft <23519517+PiJoCoder@users.noreply.github.com>
Date: Fri, 19 Apr 2024 14:53:34 -0500
Subject: [PATCH 3/5] #336 added a Missing MSI/MSPs report accessible from Main
and Best practices
---
NexusReports/AnalysisSummary_C.rdl | 2 +
NexusReports/AnalysisSummary_C.rdl.data | Bin 0 -> 27648 bytes
NexusReports/Missing_MSIs_or_MSPs_C.rdl | 483 +++++++++++++++++++
NexusReports/Missing_MSIs_or_MSPs_C.rdl.data | Bin 0 -> 7168 bytes
NexusReports/NexusReports.rptproj | 1 +
NexusReports/SQL Perf Main.rdl | 19 +
sqlnexus/Reports/AnalysisSummary_C.rdlC | 2 +
sqlnexus/Reports/Missing_MSIs_or_MSPs_C.rdlC | 483 +++++++++++++++++++
sqlnexus/Reports/SQL Perf Main.rdl | 19 +
sqlnexus/sqlnexus.csproj | 13 +
10 files changed, 1022 insertions(+)
create mode 100644 NexusReports/AnalysisSummary_C.rdl.data
create mode 100644 NexusReports/Missing_MSIs_or_MSPs_C.rdl
create mode 100644 NexusReports/Missing_MSIs_or_MSPs_C.rdl.data
create mode 100644 sqlnexus/Reports/Missing_MSIs_or_MSPs_C.rdlC
diff --git a/NexusReports/AnalysisSummary_C.rdl b/NexusReports/AnalysisSummary_C.rdl
index 1ca7344..e9d1519 100644
--- a/NexusReports/AnalysisSummary_C.rdl
+++ b/NexusReports/AnalysisSummary_C.rdl
@@ -675,6 +675,7 @@ Fields!Report.Value = "Missing Indexes", "Missing Indexes_C",
Fields!Report.Value = "Spinlock Stats", "Spinlock Stats_C",
Fields!Report.Value = "Loaded Modules", "Loaded Modules_C",
Fields!Report.Value = "AlwaysOn Report", "AlwaysOn_AGBasics_C",
+Fields!Report.Value = "Missing MSI or MSPs", "Missing_MSIs_or_MSPs_C",
Fields!Report.Value = "data imported with older SQLNexus version", Nothing,
Fields!Report.Value = "", Nothing)
@@ -699,6 +700,7 @@ Fields!Report.Value = "", Nothing)
2pt
+ true
diff --git a/NexusReports/AnalysisSummary_C.rdl.data b/NexusReports/AnalysisSummary_C.rdl.data
new file mode 100644
index 0000000000000000000000000000000000000000..93a0154829051dddcd531e49083635ece9905484
GIT binary patch
literal 27648
zcmeHQYj7Lab;c5;_^|wt{EB7AxwhhvvIqhoDT=h?2S|bvW4=U?vSmr37r>I(5ZHxw
z7o?bW8aJ)mN$r_~y?+DxC*{%D)zN77E4%y`l?lgZR|(lm9aBikA$
zspGicIrlEG1hFtB%dy=W_60!f-Mjamdmi6;?CP8UwCi7=_~Sj#MCx95Mxv2lyxJMr
z5%^uhcWV5)A`)rA7yA1bufF=K{4o;2*LPlTBMQ8NxyIBUw&Jr5jrP19tplwWtqbiE
zw4G>|qFsh|IT~0XvI}iD+LdTmp4=>-%fp?)6FD@1jZLMIW?pH2+5OPjh{%
z$Uo^KUk3!`pMLY@{{Z?7p&djUMjJu94efTc_oLl`b|>0hXm_Kf&_>b5(8kedTPDyB
zp&dq>MEd~RJ!n&C(`YkjvuJZ@N6_ZcGH45Ei)csD?nS!~?HJnqXvfh`pq)hfAleez
z186#07A=RCM>Eit(N@q3XeQc+(B3G$_C@WBnihRFs=cKBfZl#cZ=~pnA%6I^uWK!j
zf<>O!p4YTXf3Lk=`@5F!x3+6P*S^*IxTa~Z;QKl4fAIb#?d4YOtoHY9+E28bUv4?4
z{Y%GhL^bWZ{QgV_27S7-UHe+}S-gK8V?VCp{N103V&Jc6AJtm4=b{+tzv%6i7Q8*v
zg3&%1#oMRo?H06nRQs&$yJ}{3e&KLxIz2x*mOAkvyKENiwFnNh8CGnOb}