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 :
- SELECT (SELECT lp.Title AS DefaultTitle
- FROM dbo.tbCategory AS c
- INNER JOIN tbUpdate AS u ON c.CategoryID = u.LocalUpdateID
- INNER JOIN tbRevision AS r ON r.LocalUpdateID = u.LocalUpdateID AND r.IsLatestRevision = 1
- INNER JOIN tbProperty AS p ON p.RevisionID = r.RevisionID
- INNER JOIN tbLocalizedPropertyForRevision AS lpr ON lpr.RevisionID = r.RevisionID AND lpr.LanguageID = p.DefaultPropertiesLanguageID
- INNER JOIN tbLocalizedProperty AS lp ON lp.LocalizedPropertyID = lpr.LocalizedPropertyID
- WHERE (c.CategoryType = N'UpdateClassification') AND (u.UpdateID = uc.UpdateID)
- ) AS Classification,
- 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,
- CASE u.IsHidden
- WHEN 0 THEN 'Approved'
- WHEN 1 THEN 'NotApproved'
- END AS IsDeclined
- FROM tbUpdate AS u
- INNER JOIN tbRevision AS r ON u.LocalUpdateID = r.LocalUpdateID
- INNER JOIN tbProperty AS p ON r.RevisionID = p.RevisionID
- INNER JOIN tbRevisionInCategory AS rc ON rc.RevisionID = r.RevisionID AND rc.Expanded = 0
- INNER JOIN tbUpdate AS uc ON uc.LocalUpdateID = rc.CategoryID
- INNER JOIN tbCategory AS c ON uc.LocalUpdateID = c.CategoryID AND c.CategoryType = N'UpdateClassification'
- INNER JOIN tbLocalizedPropertyForRevision AS lpr ON lpr.RevisionID = r.RevisionID AND lpr.LanguageID = p.DefaultPropertiesLanguageID
- 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