Heißes Thema (mehr als 10 Antworten) WSUS SQL Query (Gelesen: 9263 mal)
Zugezogener
WSUS Neuling
Offline


I Love WSUS!

Beiträge: 7
Mitglied seit: 11.01.13
WSUS SQL Query
29.01.13 um 10:59:38
Beitrag drucken  
Hallo,

ich suche eine Möglichkeit den SQL Query den ich schon vom View abgeleitet habe um die MUURL aus der tbFile Tabelle zu erweitern damit ich passend zu jedem Update auch die URL oder den Dateinamen habe...

Wenn ich versuche bei der Abfrage den INNER JOIN über die revisionID von der tbFileForRevision zu setzen und der tbFile über die identische Filedigest bekomme ich keine Ergenbisse mehr...

Ich dreh noch völlig ab - die DB vom WSUS ist für "NEulinge" wirklich schwierig...

Hier die aktuelle Abfrage:
Code
SELECT     u.UpdateID, lp.Title AS DefaultTitle, lp.Description AS DefaultDescription,
                      p.ReceivedFromCreatorService AS ArrivalDate, p.CreationDate, p.MsrcSeverity,
                      (CASE p.PublicationState WHEN 0 THEN N'Published' WHEN 1 THEN N'Expired' ELSE NULL END) AS PublicationState,
                      (CASE uc.UpdateID WHEN '5C9376AB-8CE6-464a-B136-22113DD69801' THEN N'SoftwareApplication' ELSE p.UpdateType END) AS UpdateType,
                      (CASE u.IsLocallyPublished WHEN 0 THEN N'MicrosoftUpdate' ELSE N'Other' END) AS UpdateSource,
                          (SELECT     TOP (1) KBArticleID
                            FROM          dbo.tbKBArticleForRevision
                            WHERE      (RevisionID = r.RevisionID)
                            ORDER BY KBArticleID DESC) AS KnowledgebaseArticle,
                          (SELECT     TOP (1) SecurityBulletinID
                            FROM          dbo.tbSecurityBulletinForRevision
                            WHERE      (RevisionID = r.RevisionID)
                            ORDER BY SecurityBulletinID DESC) AS SecurityBulletin, ISNULL(p.InstallRequiresUserInput, 0) AS InstallationCanRequestUserInput,
                      ISNULL(p.InstallRequiresConnectivity, 0) AS InstallationRequiresNetworkConnectivity,
                      (CASE p.InstallationImpact WHEN 0 THEN N'Normal' WHEN 1 THEN N'Minor' WHEN 2 THEN N'RequiresExclusiveHandling' ELSE N'Normal' END)
                      AS InstallationImpact,
                      (CASE p.InstallRebootBehavior WHEN 0 THEN N'NeverReboots' WHEN 1 THEN N'AlwaysRequiresReboot' WHEN 2 THEN N'CanRequestReboot' ELSE N'NeverReboots'
                       END) AS InstallationRebootBehavior
FROM         dbo.tbUpdate AS u
				INNER JOIN dbo.tbRevision AS r ON u.LocalUpdateID = r.LocalUpdateID
				INNER JOIN dbo.tbProperty AS p ON r.RevisionID = p.RevisionID
				INNER JOIN dbo.tbRevisionInCategory AS rc ON rc.RevisionID = r.RevisionID AND rc.Expanded = 0
				INNER JOIN dbo.tbUpdate AS uc ON uc.LocalUpdateID = rc.CategoryID
				INNER JOIN dbo.tbCategory AS c ON uc.LocalUpdateID = c.CategoryID AND c.CategoryType = N'UpdateClassification'
				INNER JOIN dbo.tbLocalizedPropertyForRevision AS lpr ON lpr.RevisionID = r.RevisionID AND lpr.LanguageID = p.DefaultPropertiesLanguageID
				INNER JOIN dbo.tbLocalizedProperty AS lp ON lp.LocalizedPropertyID = lpr.LocalizedPropertyID
--			INNER JOIN dbo.tbFileForRevision AS ffr ON ffr.RevisionID = r.RevisionID
--			INNER JOIn dbo.tbFile AS f ON f.FileDigest = ffr.FileDigest
WHERE     (r.IsLatestRevision = 1) AND (p.ExplicitlyDeployable = 1)
 



Unten meine beiden Inner Joins sind schon auskommentiert, da dann nichts geht.
Hat jemand einen Vorschlag??

DANKE!
  
Zum Seitenanfang
 
Sunny
Microsoft MVP
*****
Offline



Beiträge: 15134
Mitglied seit: 11.02.07
Geschlecht: männlich
Re: WSUS SQL Query
Antwort #1 - 30.01.13 um 10:00:05
Beitrag drucken  
Wow, interessant. Reicht es dir bis zum WE? Vorher ist leider keine Zeit das ausführlich zu testen.
  
Zum Seitenanfang
 
Zugezogener
WSUS Neuling
Offline


I Love WSUS!

Beiträge: 7
Mitglied seit: 11.01.13
Re: WSUS SQL Query
Antwort #2 - 14.02.13 um 13:00:31
Beitrag drucken  
Sorry - "kleiner Autounfall" hat mich rausgehauen...

Aktueller Status ist der hier (den hab ich als View eingebunden) damit ich ihn einfacher von Tools abfragen kann:
Code
SELECT     TOP (100) PERCENT u.UpdateID, u.LocalUpdateID, r.RevisionID,
                          (SELECT     TOP (1) FileDigest
                            FROM          dbo.tbFileForRevision
                            WHERE      (RevisionID = r.RevisionID)) AS FileDigest,
                          (SELECT     TOP (1) dbo.tbFile.FileName
                            FROM          dbo.tbFile INNER JOIN
                                                   dbo.tbFileForRevision AS tbFileForRevision_4 ON dbo.tbFile.FileDigest = tbFileForRevision_4.FileDigest
                            WHERE      (dbo.tbFile.FileDigest IN
                                                       (SELECT     FileDigest
                                                         FROM          dbo.tbFileForRevision AS tbFileForRevision_3
                                                         WHERE      (RevisionID = r.RevisionID)))) AS FileName,
                          (SELECT     TOP (1) tbFile_1.MUURL
                            FROM          dbo.tbFile AS tbFile_1 INNER JOIN
                                                   dbo.tbFileForRevision AS tbFileForRevision_2 ON tbFile_1.FileDigest = tbFileForRevision_2.FileDigest
                            WHERE      (tbFile_1.FileDigest IN
                                                       (SELECT     FileDigest
                                                         FROM          dbo.tbFileForRevision AS tbFileForRevision_1
                                                         WHERE      (RevisionID = r.RevisionID)))) AS MUURL,
                          (SELECT     TOP (1) LanguageID
                            FROM          dbo.tbRevisionLanguage
                            WHERE      (RevisionID = r.RevisionID)) AS LanguageID,
                          (SELECT     TOP (1) LongLanguage
                            FROM          dbo.tbLanguage
                            WHERE      (LanguageID IN
                                                       (SELECT     LanguageID
                                                         FROM          dbo.tbRevisionLanguage AS tbRevisionLanguage_1
                                                         WHERE      (RevisionID = r.RevisionID)))) AS LongLanguage, lp.Title AS Description, lp.Description AS DefaultDescription,
                      p.ReceivedFromCreatorService AS ArrivalDate, p.CreationDate, p.MsrcSeverity,
                      (CASE p.PublicationState WHEN 0 THEN N'Published' WHEN 1 THEN N'Expired' ELSE NULL END) AS PublicationState,
                      (CASE uc.UpdateID WHEN '5C9376AB-8CE6-464a-B136-22113DD69801' THEN N'SoftwareApplication' ELSE p.UpdateType END) AS UpdateType,
                      (CASE u.IsLocallyPublished WHEN 0 THEN N'MicrosoftUpdate' ELSE N'Other' END) AS UpdateSource,
                          (SELECT     TOP (1) KBArticleID
                            FROM          dbo.tbKBArticleForRevision
                            WHERE      (RevisionID = r.RevisionID)
                            ORDER BY KBArticleID DESC) AS KnowledgebaseArticle,
                          (SELECT     TOP (1) SecurityBulletinID
                            FROM          dbo.tbSecurityBulletinForRevision
                            WHERE      (RevisionID = r.RevisionID)
                            ORDER BY SecurityBulletinID DESC) AS SecurityBulletin, ISNULL(p.InstallRequiresUserInput, 0) AS InstallationCanRequestUserInput,
                      ISNULL(p.InstallRequiresConnectivity, 0) AS InstallationRequiresNetworkConnectivity,
                      (CASE p.InstallationImpact WHEN 0 THEN N'Normal' WHEN 1 THEN N'Minor' WHEN 2 THEN N'RequiresExclusiveHandling' ELSE N'Normal' END)
                      AS InstallationImpact,
                      (CASE p.InstallRebootBehavior WHEN 0 THEN N'NeverReboots' WHEN 1 THEN N'AlwaysRequiresReboot' WHEN 2 THEN N'CanRequestReboot' ELSE N'NeverReboots'
                       END) AS InstallationRebootBehavior
FROM         dbo.tbUpdate AS u INNER JOIN
                      dbo.tbRevision AS r ON u.LocalUpdateID = r.LocalUpdateID INNER JOIN
                      dbo.tbProperty AS p ON r.RevisionID = p.RevisionID INNER JOIN
                      dbo.tbRevisionInCategory AS rc ON rc.RevisionID = r.RevisionID AND rc.Expanded = 0 INNER JOIN
                      dbo.tbUpdate AS uc ON uc.LocalUpdateID = rc.CategoryID INNER JOIN
                      dbo.tbCategory AS c ON uc.LocalUpdateID = c.CategoryID AND c.CategoryType = N'UpdateClassification' INNER JOIN
                      dbo.tbLocalizedPropertyForRevision AS lpr ON lpr.RevisionID = r.RevisionID AND lpr.LanguageID = p.DefaultPropertiesLanguageID INNER JOIN
                      dbo.tbLocalizedProperty AS lp ON lp.LocalizedPropertyID = lpr.LocalizedPropertyID
WHERE     (r.IsLatestRevision = 1) AND (p.ExplicitlyDeployable = 1)
ORDER BY ArrivalDate
 



Nun merke ich allerdings, dass ich alle möglichen Daten bekomme, jedoch die großen SP's und der ganze Spaß.... Also das Wichtigste!
Da scheine ich nur die Eula zu bekommen...

Andererseits: Was muss ich machen, damit der WSUS die SP's statt der Eula in der DB hat?
Irgdendwie scheint der Wurm drin zu sein...
  
Zum Seitenanfang
 
DESoft
WSUS Experte
*****
Offline


I Love WSUS!<br />

Beiträge: 702
Standort: Magdeburg
Mitglied seit: 24.07.08
Re: WSUS SQL Query
Antwort #3 - 17.02.13 um 16:49:42
Beitrag drucken  
Hallo Zugezogener,

Zugezogener schrieb on 29.01.13 um 10:59:38:
Ich dreh noch völlig ab - die DB vom WSUS ist für "NEulinge" wirklich schwierig...

Es ist nicht vorgesehen, in der SUSDB rumzufummeln. Und auch nicht alle Informationen sind ohne die programmatische Lösung drumherum nutzbar.

Zugezogener schrieb on 29.01.13 um 10:59:38:
Hat jemand einen Vorschlag??

Ja, nutze das WSUS-API und Visual Studio. Da ist schon viel möglich.

Zugezogener schrieb on 14.02.13 um 13:00:31:
Irgdendwie scheint der Wurm drin zu sein... 

Ja ... Du hast uns noch nicht verraten, wo das dann enden soll. Zwinkernd

Gruß Dani
  
Zum Seitenanfang
 
Zugezogener
WSUS Neuling
Offline


I Love WSUS!

Beiträge: 7
Mitglied seit: 11.01.13
Re: WSUS SQL Query
Antwort #4 - 17.02.13 um 23:53:26
Beitrag drucken  
Ich möchte eigentlich nur ein Tool zum erstellen einer entsprechenden "eigenen" in meinem Fall MySQL DB mit den entsprechenden Infos zu den Updates, den Fileinfos und die Information wo ich die auf dem WSUS finden kann.

Das habe ich eigentlich auch alles - aber hab ich hier und da nur txt-files mit Eula's. Griesgrämig

  
Zum Seitenanfang
 
DESoft
WSUS Experte
*****
Offline


I Love WSUS!<br />

Beiträge: 702
Standort: Magdeburg
Mitglied seit: 24.07.08
Re: WSUS SQL Query
Antwort #5 - 18.02.13 um 04:33:29
Beitrag drucken  
Hast Du in der Konsole mal ein Update ausgewählt und dann das Menü Dateiinformationen ausgewählt?
Ich denke, das ist genau das was Du suchst.
Um den Mechanismus in der SUSDB zu finden, solltes Du dich auf eine der Storedprocedures konzentrieren. Als Parameter wird wahrscheinlich eine ID für das ausgewählte Update erforderlich sein. Irgendwomit muss der Dialog ja gefüllt werden.  Zwinkernd

Gruß Dani
  
Zum Seitenanfang
 
Zugezogener
WSUS Neuling
Offline


I Love WSUS!

Beiträge: 7
Mitglied seit: 11.01.13
Re: WSUS SQL Query
Antwort #6 - 18.02.13 um 09:26:06
Beitrag drucken  
Danke ich guck mal Die große Frage für mich ist allerdings immernoch warum ich zB ein SP nicht in WSUSContent finde.
Ich habe eine Regek definiert die alle Updates genehmigt, jedoch wenn ich über die tbfile gucke finde ich da nur die txt mit der eula...
Die Struktur mit dem "letzten beiden Zeichen der Sha1 als Ordner + Sha als Dateiname" ist hier irgendwie nciht nutzbar Griesgrämig
  
Zum Seitenanfang
 
DESoft
WSUS Experte
*****
Offline


I Love WSUS!<br />

Beiträge: 702
Standort: Magdeburg
Mitglied seit: 24.07.08
Re: WSUS SQL Query
Antwort #7 - 18.02.13 um 21:29:46
Beitrag drucken  
Die Genehmigung via Regel hat ein kleines Problem. Die Zustimmung zur EULA, eine Voraussetzung für den Download, kann nur manuell erfolgen.
Daher sollten alle betroffenen Produkte mit Eula nach der Zustimmung in eine Regel aufgenommen werden. Für nachfolgende Revisionen wird die Zustimmung vom Vorgänger übernommen.

Die Auswahl der Klassifizierung "ServicePacks" setzte ich mal voraus.

Gruß Dani
  
Zum Seitenanfang
 
Zugezogener
WSUS Neuling
Offline


I Love WSUS!

Beiträge: 7
Mitglied seit: 11.01.13
Re: WSUS SQL Query
Antwort #8 - 18.02.13 um 23:10:13
Beitrag drucken  
Das ist ein Scherz oder?
Das würde bedeuten jeder Admin da draussen müsste jede Eula für jedes Produktupdate ansehen und durchscrollen + annehmen?
Manuell?
Erst dann wird der Eulatext gegen die echte SP Installationsdatei getauscht?

Mir ist ja klar, dass eula's theoretisch zum Lesen da sind aber was wenn der Admin mal im KKH liegt? Kein SP für die Clients? Selbst das MalWare Removal Tool hat diese txt's ...

Kann man da nicht den Haken per SQL Query setzen? theoretisch müsste es doch nur ein Bool-Wert sein oder?
  
Zum Seitenanfang
 
UMeadow
WSUS Spezialist
*****
Offline


I Love WSUS!

Beiträge: 1381
Standort: Berlin
Mitglied seit: 22.01.08
Geschlecht: männlich
Re: WSUS SQL Query
Antwort #9 - 19.02.13 um 12:32:46
Beitrag drucken  
Zugezogener schrieb on 18.02.13 um 23:10:13:
Das ist ein Scherz oder?

Nein, ein Enduserlizenvertrag muss nun einmal abgenickt werden, das ist nicht nur bei Microsodt so und ein SP kommt nicht plötzlich und unerwartet und ich glaube nicht, das das jemand ohne gründlcihe Vorbereitung ausrollt.
  
Zum Seitenanfang
 
Sunny
Microsoft MVP
*****
Offline



Beiträge: 15134
Mitglied seit: 11.02.07
Geschlecht: männlich
Re: WSUS SQL Query
Antwort #10 - 19.02.13 um 22:06:19
Beitrag drucken  
Zugezogener schrieb on 18.02.13 um 23:10:13:
Das ist ein Scherz oder?



nein, kein Scherz.

Zugezogener schrieb on 18.02.13 um 23:10:13:
Das würde bedeuten jeder Admin da draussen müsste jede Eula für jedes Produktupdate ansehen und durchscrollen + annehmen?
Manuell?
Erst dann wird der Eulatext gegen die echte SP Installationsdatei getauscht?


Nur für solche Updates, bei denen Du auch eine EULA abnicken mußt, ein SP gehört dazu, ein IE8 oder IE9 ebenfalls.

Zugezogener schrieb on 18.02.13 um 23:10:13:
Mir ist ja klar, dass eula's theoretisch zum Lesen da sind aber was wenn der Admin mal im KKH liegt? Kein SP für die Clients? Selbst das MalWare Removal Tool hat diese txt's ...

Kann man da nicht den Haken per SQL Query setzen? theoretisch müsste es doch nur ein Bool-Wert sein oder?


Wenn der Admin im Krankenhaus liegt, kommt eine Vertretung von einem Dienstleister, genau dafür sind die da.

Ob es ausreicht ein True oder False zu setzen, weiß ich nicht.
  
Zum Seitenanfang
 
Zugezogener
WSUS Neuling
Offline


I Love WSUS!

Beiträge: 7
Mitglied seit: 11.01.13
Re: WSUS SQL Query
Antwort #11 - 19.02.13 um 22:15:18
Beitrag drucken  
OK.

Also: Alle Downloads nun abgenickt, in der tbFile mal nach Size sortiert und es ist auch alles da...
Hätte noch jemand einen Tip wie ich über eine Modifikation des Query's oben bzw. des Views an zB ein großes SP gibt mir als FileDigest und Filename NULL als Wert...
Ich verstehe nicht wie diese DB das in eine Struktur packt die ich abfragen kann Griesgrämig
  
Zum Seitenanfang
 
Bookmarks: Facebook Google Google+ Linked in Twitter Yahoo
 



Nutzungsbedingungen | Datenschutz
Kontakt | RSS | Feedback | Impressum
Facebook | News einsenden