Showing posts with label console. Show all posts
Showing posts with label console. Show all posts

Thursday, September 13, 2018

SCCM - Distribution Point Console Performance Issues - Please make an Index



When you have a lot of Distribution Points you could have Console Performance Issues  (SCCM CB 1803, I don't know if solution below have been released since in SCCM CB future release)


For example, when I click on "Administration\Overview\Distribution Points" it takes 6-7 minutes to display 2900 Standard and Pulll Distribution Point
















If we look into SMSProv.log file (in folder "Program Files\Microsoft Configuration Manager\Logs") when you click on "Distribution Points" you should have theses entries

Execute WQL  =Select * From SMS_DistributionPointInfo~
Execute SQL =select  all SMS_DistributionPointInfo.AddressScheduleEnabled,SMS_DistributionPointInfo.BindExcept,SMS_DistributionPointInfo.BindPolicy,SMS_DistributionPointInfo.BitsEnabled,SMS_DistributionPointInfo.CertificateType,SMS_DistributionPointInfo.Communication,SMS_DistributionPointInfo.Description,SMS_DistributionPointInfo.DPFlags,SMS_DistributionPointInfo.Drive,SMS_DistributionPointInfo.GroupCount,SMS_DistributionPointInfo.HasRelationship,SMS_DistributionPointInfo.HealthCheckEnabled,SMS_DistributionPointInfo.HealthCheckPriority,SMS_DistributionPointInfo.HealthCheckSchedule,SMS_DistributionPointInfo.ID,SMS_DistributionPointInfo.IdentityGUID,SMS_DistributionPointInfo.InternetFacing,SMS_DistributionPointInfo.IsActive,SMS_DistributionPointInfo.IsMulticast,SMS_DistributionPointInfo.IsPeerDP,SMS_DistributionPointInfo.IsProtected,SMS_DistributionPointInfo.IsPullDP,SMS_DistributionPointInfo.IsPXE,SMS_DistributionPointInfo.NALPath,SMS_DistributionPointInfo.Name,SMS_DistributionPointInfo.OperatingSystem,SMS_DistributionPointInfo.PreStagingAllowed,SMS_DistributionPointInfo.Priority,SMS_DistributionPointInfo.PXEPassword,SMS_DistributionPointInfo.RateLimitsEnabled,SMS_DistributionPointInfo.Region,SMS_DistributionPointInfo.ResourceType,SMS_DistributionPointInfo.ResponseDelay,SMS_DistributionPointInfo.SccmPXE,SMS_DistributionPointInfo.ServerName,SMS_DistributionPointInfo.ServiceType,SMS_DistributionPointInfo.ShareName,SMS_DistributionPointInfo.SiteCode,SMS_DistributionPointInfo.SiteName,SMS_DistributionPointInfo.SupportUnknownMachines,SMS_DistributionPointInfo.TransferRate,SMS_DistributionPointInfo.UdaSetting,SMS_DistributionPointInfo.Version from v_DistributionPointInfo AS SMS_DistributionPointInfo ~   



When I do same query on SQL Server Management Studio
SELECT * from v_DistributionPointInfo
->same result







So I make a Call To Microsoft (because I assume I will need an Index )

After query with  "Include Actual Execution Plan" we can see problem

here what view do...

And as you can see in a zoom below a lot of SC_SysResUse_Property seems take a lot of time (missing an Index...)


So using an new index (Thanks to Cyril C. from Microsoft), now same query in 5 sec (remember before it was 7-8min)
As usual, it is NOT permit to modify SQL directly to do not lose your Microsoft support. So please contact Microsoft if you need to resolve this problem.



/****** Object:  Index [NonClusteredIndex-20180827-163036]    Script Date: 27/08/2018 16:42:14 ******/
CREATE NONCLUSTERED INDEX [NonClusteredIndex-20180827-163036] ON [dbo].[SC_SysResUse_Property]
(
              [SysResUseID] ASC,
              [Value3] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

USE [CM_AHD]
GO

SET ANSI_PADDING ON
GO

/****** Object:  Index [NonClusteredIndex-20180827-161513]    Script Date: 27/08/2018 16:42:00 ******/
CREATE NONCLUSTERED INDEX [NonClusteredIndex-20180827-161513] ON [dbo].[SC_SysResUse_Property]
(
              [SysResUseID] ASC
)
INCLUDE (          [Value3],
              [Name],
              [Value1],
              [Value2]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO


Thursday, June 14, 2018

Console Query - \Monitoring\Overview\Distribution Status\Distribution Point Configuration Status

Information about \Monitoring\Overview\Distribution Status\Distribution Point Configuration Status
 






Console information come from file
C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\XmlStorage\ConsoleRoot in MonitoringNode.xml
and from SMSProv.log  (C:\Program Files\Microsoft Configuration Manager\Logs)


















1) if you use textbox filter to search XXXX
Execute WQL  =SELECT * FROM SMS_DPStatusInfo WHERE ( (IsPullDP LIKE '%XXXX%'  OR IsDPMonEnabled LIKE '%XXXX%'  OR IsMulticast LIKE '%XXXX%'  OR IsPXE LIKE '%XXXX%'  OR Version LIKE '%XXXX%'  OR Name LIKE '%XXXX%' ) )
Execute SQL =select  all SMS_DPStatusInfo.IsDPMonEnabled,SMS_DPStatusInfo.IsMulticast,SMS_DPStatusInfo.IsPullDP,SMS_DPStatusInfo.IsPXE,SMS_DPStatusInfo.LastStatusTime,SMS_DPStatusInfo.MessageCount,SMS_DPStatusInfo.MessageState,SMS_DPStatusInfo.NALPath,SMS_DPStatusInfo.Name,SMS_DPStatusInfo.NumberErrors,SMS_DPStatusInfo.NumberInProgress,SMS_DPStatusInfo.NumberInstalled,SMS_DPStatusInfo.NumberUnknown,SMS_DPStatusInfo.SccmPXE,SMS_DPStatusInfo.Version from vSMS_DPStatusInfo AS SMS_DPStatusInfo  where (((((SMS_DPStatusInfo.IsPullDP like N'%XXXX%' OR SMS_DPStatusInfo.IsDPMonEnabled like N'%XXXX%') OR SMS_DPStatusInfo.IsMulticast like N'%XXXX%') OR SMS_DPStatusInfo.IsPXE like N'%XXXX%') OR SMS_DPStatusInfo.Version like N'%XXXX%') OR SMS_DPStatusInfo.Name like N'%XXXX%')

2) By default if you do not use filter
Execute WQL  =SELECT * FROM SMS_DPStatusInfo
Execute SQL =select  all SMS_DPStatusInfo.IsDPMonEnabled,SMS_DPStatusInfo.IsMulticast,SMS_DPStatusInfo.IsPullDP,SMS_DPStatusInfo.IsPXE,SMS_DPStatusInfo.LastStatusTime,SMS_DPStatusInfo.MessageCount,SMS_DPStatusInfo.MessageState,SMS_DPStatusInfo.NALPath,SMS_DPStatusInfo.Name,SMS_DPStatusInfo.NumberErrors,SMS_DPStatusInfo.NumberInProgress,SMS_DPStatusInfo.NumberInstalled,SMS_DPStatusInfo.NumberUnknown,SMS_DPStatusInfo.SccmPXE,SMS_DPStatusInfo.Version from vSMS_DPStatusInfo AS SMS_DPStatusInfo

3) Distribution Point Status Details
Execute WQL  =SELECT * FROM SMS_DPStatusDetails WHERE NALPath = '["Display=\\\\COMPUTERNAME.MYDOMAIN.NET\\"]MSWNET:["SMS_SITE=XYZ"]\\\\COMPUTERNAME.MYDOMAIN.NET\\'
Execute SQL =select  all SMS_DPStatusDetails.DPName,SMS_DPStatusDetails.ID,SMS_DPStatusDetails.InsString1,SMS_DPStatusDetails.InsString10,SMS_DPStatusDetails.InsString2,SMS_DPStatusDetails.InsString3,SMS_DPStatusDetails.InsString4,SMS_DPStatusDetails.InsString5,SMS_DPStatusDetails.InsString6,SMS_DPStatusDetails.InsString7,SMS_DPStatusDetails.InsString8,SMS_DPStatusDetails.InsString9,SMS_DPStatusDetails.LastStatusTime,SMS_DPStatusDetails.MessageCategory,SMS_DPStatusDetails.MessageFullID,SMS_DPStatusDetails.MessageID,SMS_DPStatusDetails.MessageSeverity,SMS_DPStatusDetails.MessageState,SMS_DPStatusDetails.NALPath,SMS_DPStatusDetails.PackageID,SMS_DPStatusDetails.SiteCode,SMS_DPStatusDetails.StatusMsgID from vSMS_DPStatusDetails AS SMS_DPStatusDetails  where SMS_DPStatusDetails.NALPath = N'["Display=\\COMPUTERNAME.MYDOMAIN.NET\"]MSWNET:["SMS_SITE=XYZ"]\\COMPUTERNAME.MYDOMAIN.NET\'

4) Specific Status Distribution Point Status Details
in 1st get object ID
 GetObjectAsync : SMS_DPStatusDetails.ID="126111"
Then get object details
Execute WQL  =select * from SMS_DPStatusDetails WHERE ID = "126111"
Execute SQL =select  all SMS_DPStatusDetails.DPName,SMS_DPStatusDetails.ID,SMS_DPStatusDetails.InsString1,SMS_DPStatusDetails.InsString10,SMS_DPStatusDetails.InsString2,SMS_DPStatusDetails.InsString3,SMS_DPStatusDetails.InsString4,SMS_DPStatusDetails.InsString5,SMS_DPStatusDetails.InsString6,SMS_DPStatusDetails.InsString7,SMS_DPStatusDetails.InsString8,SMS_DPStatusDetails.InsString9,SMS_DPStatusDetails.LastStatusTime,SMS_DPStatusDetails.MessageCategory,SMS_DPStatusDetails.MessageFullID,SMS_DPStatusDetails.MessageID,SMS_DPStatusDetails.MessageSeverity,SMS_DPStatusDetails.MessageState,SMS_DPStatusDetails.NALPath,SMS_DPStatusDetails.PackageID,SMS_DPStatusDetails.SiteCode,SMS_DPStatusDetails.StatusMsgID from vSMS_DPStatusDetails AS SMS_DPStatusDetails  where SMS_DPStatusDetails.ID = N'126111'