SCCM Software Updates Deployments Troubleshooting – 3

Herkese Merhaba;

SCCM Software Update Deployments altyapısı ile ilgili troubleshooting makale serisinin 3.’sünde sizlerle bazı dinamik SQL sorgular paylaşıyor olacağım.

Bildiğiniz gibi SCCM ile birlikte client veya server’lardan çok fazla veri gelmektedir. Özellikle troubleshooting yapmak için hangi verinin hangi tabloda tutulduğunu, hangi view’lerin kullanıldığını bilmek, çözüme daha hızlı ulaşmamızı sağlayabiliyor.

Bu yüzden, öncelikle SCCM DB’de hazır view’lere ait detay bilgilere aşağıdaki URL’den ulaşabilirsiniz.

https://gallery.technet.microsoft.com/SCCM-Configmgr-2012-R2-SQL-5fefdd3b

 

Şimdi sorgulara bir bakalım:

 

Query -1

Bu sorguyu çalıştırdığınızda hazırladığınız Software Update Groupların detay bilgilerine ulaşabilirsiniz.

 

select * from fn_rbac_AuthListInfo(1033, ‘disabled’)

 

Query-2

Bu query herhangi bir update group için deployment sonucunu bizlere göstermektedir. Sorguda status değerlerine baktığımızda 1 ve 3 compliant durumu,2 non-compliant durumu, 0 ise unknown (yani scan edilmemiş makineleri) durumu göstermektedir.

Yani Haziran 2018 için örneğin bir update group oluşturup deploy ettiğinizde scop_id yi değiştirip status u (1,3) seçmeniz durumunda update’leri yüklenmiş makine sayılarını bulabilirsiniz.

 

select t0.ResourceID,Max(t3.Netbios_Name0) Name0

from v_Update_ComplianceStatusAll t0

INNER JOIN v_ConfigurationItems t1 ON t0.CI_ID = t1.CI_ID

INNER JOIN fn_rbac_AuthListInfo(1033, ‘disabled’) t2 ON t1.CI_UniqueID = t2.CI_UniqueID

INNER JOIN v_R_System t3 ON t0.ResourceID = t3.ResourceID

where status in (1,3)

and t2.CI_UniqueID = ‘ScopeId_XXX’

group by t0.ResourceID

order by t0.ResourceID asc

 

 

 

Query -3

Agent ‘ın genel sağlık durumunu bu query ile alabilir ve buna göre özellikle wsusscan durum bilgisine göre analiz yapabilirsiniz.

 

A1.ResourceID as AgentHealthStatus_ResourceID,

DATEDIFF (day,A2.LastHWScan,GetDate()) AS LastHWScanDays,

DATEDIFF (day,A3.LastScanDate,GetDate()) AS LastSWScanDays,

DATEDIFF (day,A4.LastScanTime,GetDate()) AS LastWSUSScanDays,

case

WHEN DATEDIFF (day,A2.LastHWScan,GetDate())<14 tHEN ‘Healthy’ ELSE ‘UnHealthy’ end AS HWScanStatus,

case

WHEN DATEDIFF (day,A3.LastScanDate,GetDate())<14 tHEN ‘Healthy’ ELSE ‘UnHealthy’ end AS SWScanStatus,

case

WHEN DATEDIFF (day,A4.LastScanTime,GetDate())<14 tHEN ‘Healthy’ ELSE ‘UnHealthy’ end AS WSUSScanStatus

FROM v_r_system A1

LEFT JOIN v_GS_WORKSTATION_STATUS A2 ON A1.ResourceID = A2.ResourceID

LEFT JOIN v_GS_LastSoftwareScan A3 ON A1.ResourceID = A3.ResourceID

LEFT JOIN v_UpdateScanStatus A4 ON A1.ResourceID = A4.ResourceID

 

 

Query -4

Update deployment sonrasında Inprogress detay bilgileri aşağıdaki sorgu ile erişebilirsiniz.

select

distinct vr.ResourceID,vr.Netbios_Name0,StateName

from fn_rbac_CIAssignment(‘disabled’) a

cross apply(

select StateType, StateID, ResourceID from .fn_rbac_AssignmentState_Combined(‘disabled’) SC

where AssignmentID=a.AssignmentID and StateType in (300,301) ) sc

left join fn_rbac_StateNames(‘disabled’) sn on sn.TopicType=sc.StateType and sn.StateID=sc.StateID

left join v_r_system vr on sc.ResourceID=vr.ResourceID

where        (sn.TopicType = 301 and sn.StateID in(1,7,8,10))

and

a.AssignmentID in

(

select AssignmentID from fn_rbac_CIAssignment(‘disabled’) where Assignment_UniqueID in

(

select DeploymentID = cia.Assignment_UniqueID

from fn_rbac_CIAssignment(‘disabled’) cia

left join fn_rbac_CIAssignmentToGroup(‘disabled’) atg on cia.AssignmentType=5 and atg.AssignmentID=cia.AssignmentID

left join fn_rbac_AuthListInfo(1033, ‘disabled’) grp on cia.AssignmentType=5 and grp.CI_ID=atg.AssignedUpdateGroup

where cia.AssignmentType in (1,5)

)

)

 

Query -5

Software Update deployment failed alan makinelerin genel durum bilgisi, aşağıdaki sorgudan alınabilir.

 

select t1.ResourceID,vr.Netbios_Name0, t3.Hex,ISNULL(t3.Description,’Unknown Error’)Description

from fn_rbac_UpdateAssignmentStatus_Live(‘disabled’) t1

INNER JOIN

(

 

select MAX(assc.LastEnforcementMessageTime)LastEnforcementMessageTime, assc.ResourceID

from fn_rbac_CIAssignment(‘disabled’) cia

join fn_rbac_UpdateAssignmentStatus_Live(‘disabled’) assc

on assc.AssignmentID = cia.AssignmentID

and isnull(assc.IsCompliant, 0)=0

and assc.LastEnforcementMessageID in (6,9)

join fn_rbac_R_System(‘disabled’) sys on assc.ResourceID=sys.ResourceID and isnull(sys.Obsolete0,0)=0

where cia.Assignment_UniqueID

in

(      select DeploymentID = cia.Assignment_UniqueID

from fn_rbac_CIAssignment(‘disabled’) cia

left join fn_rbac_CIAssignmentToGroup(‘disabled’) atg on cia.AssignmentType=5 and atg.AssignmentID=cia.AssignmentID

left join fn_rbac_AuthListInfo(1033, ‘disabled’) grp on cia.AssignmentType=5 and grp.CI_ID=atg.AssignedUpdateGroup

where cia.AssignmentType in (1,5)

)

Group by assc.ResourceID

 

) t2 ON t1.ResourceID = t2.ResourceID and t1.LastEnforcementMessageTime=t2.LastEnforcementMessageTime

LEFT OUTER JOIN [ErrorCodeDescription] t3 ON t1.LastEnforcementErrorCode = t3.SignedInt

INNER JOIN v_R_System vr ON T1.ResourceID= vr.ResourceID

 

 

Hata kodlarına da bu query ile ulaşılabilir.

 

select * from [ErrorCodeDescription]

 

 

State tiplerine göre detay bilgilere de link’ten ulaşabilirsiniz.

https://technet.microsoft.com/en-us/library/bb932203.aspx

Bu query’leri SCCM Database (CM_XYZ) üzerinde çalıştırarak sonuçları görebilirsiniz.

Add a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir