[SQL] Requete sur WSUS

Requete sur WSUS [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 19-04-2016 à 18:25:35    

Bonjour,
Je ne sais pas si on va pouvoir m'aider sur cette catégorie mais je tente ma chance.
J'essaye actuellement de faire une requète SQL sur une base de données WSUS.
Le but de ma requête est de me ressortir les informations suivantes :

  • Classification
  • MsrcSeverity  
  • IsSuperseded  
  • Title  
  • UpdateId  
  • KnowledgebaseArticles  
  • SecurityBulletins  
  • Approved


Ce qui doit normalement me donner comme résultat (Exemple):
Security Updates
Important
True
Security Update for SQL Server 2008 R2 Service Pack 2 (KB2977320)
285b2ea3-c342-47e9-97b0-65d68c13f3bd
2977320
MS14-044
NotApproved
 
Ma requête actuelle me permet d'extraire l'ensemble des champs dont j'ai besoin sauf 1 (IsSuperseded) qui est censé me dire si cette mise à jour est remplacé par une plus récente ou non.
Il existe une cmdlets powershell Get-WsusUpdate me permettant d'avoir cette information, cependant cette commande est extremment longue, plus de 25 min d'execution ... c'est pour cela que je souhaite le faire directement par SQL.
 
Voici ma commande actuelle me permettant d'extraire tout les champs sauf le Superseded.
 

Code :
  1. SELECT    (SELECT     lp.Title AS DefaultTitle
  2.       FROM         dbo.tbCategory AS c
  3.       INNER JOIN tbUpdate AS u ON c.CategoryID = u.LocalUpdateID
  4.       INNER JOIN tbRevision AS r ON r.LocalUpdateID = u.LocalUpdateID AND r.IsLatestRevision = 1
  5.       INNER JOIN tbProperty AS p ON p.RevisionID = r.RevisionID
  6.       INNER JOIN tbLocalizedPropertyForRevision AS lpr ON lpr.RevisionID = r.RevisionID AND lpr.LanguageID = p.DefaultPropertiesLanguageID
  7.       INNER JOIN tbLocalizedProperty AS lp ON lp.LocalizedPropertyID = lpr.LocalizedPropertyID
  8.       WHERE     (c.CategoryType = N'UpdateClassification') AND (u.UpdateID = uc.UpdateID)
  9.      ) AS Classification,
  10.      p.MsrcSeverity, u.UpdateID, lp.Title AS DefaultTitle,(SELECT TOP (1) KBArticleID FROM tbKBArticleForRevision WHERE (RevisionID = r.RevisionID)) AS KnowledgebaseArticle, (SELECT TOP (1) SecurityBulletinID FROM tbSecurityBulletinForRevision WHERE (RevisionID = r.RevisionID)) AS SecurityBulletin,
  11. CASE u.IsHidden
  12. WHEN 0 THEN 'Approved'
  13. WHEN 1 THEN 'NotApproved'
  14. END AS IsDeclined      
  15. FROM  tbUpdate AS u
  16. INNER JOIN tbRevision AS r ON u.LocalUpdateID = r.LocalUpdateID
  17. INNER JOIN tbProperty AS p ON r.RevisionID = p.RevisionID
  18. INNER JOIN tbRevisionInCategory AS rc ON rc.RevisionID = r.RevisionID AND rc.Expanded = 0
  19. INNER JOIN tbUpdate AS uc ON uc.LocalUpdateID = rc.CategoryID                 
  20. INNER JOIN tbCategory AS c ON uc.LocalUpdateID = c.CategoryID AND c.CategoryType = N'UpdateClassification'
  21. INNER JOIN tbLocalizedPropertyForRevision AS lpr ON lpr.RevisionID = r.RevisionID AND lpr.LanguageID = p.DefaultPropertiesLanguageID
  22. INNER JOIN tbLocalizedProperty AS lp ON lp.LocalizedPropertyID = lpr.LocalizedPropertyID


 
Cela me donne un resultat de ce type :
Critical Updates Unspecified EB2F3540-DBAB-45D0-BF7F-5822BBE81A55 Update for Background Intelligent Transfer Service (BITS) (KB883357) 883357 NULL Approved
 
Il me manque donc mon dernier champs qui est le IsSuperseded
Quelqu'un pourrai-t'il m'aider à extraire ce fameux champs ?
 
 
Merci


Message édité par Ekimmu le 19-04-2016 à 18:29:38
Reply

Marsh Posté le 19-04-2016 à 18:25:35   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed