the-buccaneer
Goto Top

WSUS Assistent zur Serverbereinigung bricht ab beim Löschen nicht benötigter Updates mit Serverknoten zurücksetzen

Hi all!

Der WSUS ist gerade mein Sorgenkind.

Er ist mitnichten mehr allein über den Assistenten zur Serverbereinigung zu warten, sondern zickt bereits nach 1 Monat wieder herum mit Timeoutfehlern und der einzigen Möglichkeit "Serverknoten zurücksetzen" bei dem Versuch, die Wartung mittels des Assistenten durchzuführen....

Dabei steht in den Verbindungseigenschaften das Timeout bereits auf "0" und auch das allg. empfohlene Datenbankwartungsskript ist durchgelaufen. Alle nicht benötigten Updates sind explizit abgelehnt, alle eigentlich "automatisch" genehmigten Updates wurden z.T. nochmal händisch genehmigt.

Trotzdem rennt der blöde Assistent offenbar in einen Timeout. (Wo könnte das noch definiert werden?)

Eine SQL Abfrage mit "spGetObsoleteUpdatesToCleanup" liefert einiges, aber händisch löschen, bei mehreren hundert, wie teils empfohlen?

Nur die evtl. "hängenden" mit niedrigster Nummer manuell zu löschen blieb natürlich erfolglos....

Hier https://www.emde-it-loesungen.de/techtalk/systemadministration/wsus-wart ... gibt es aber folgenden Tipp um das mittels SQL Management Studio Express zu lösen:

Mit der SUSDB verbinden und dann als Abfrage starten:
DECLARE @var1 INT 
DECLARE @msg nvarchar(100) 
CREATE TABLE #results (Col1 INT) INSERT INTO #results(Col1) 
EXEC spGetObsoleteUpdatesToCleanup 
DECLARE WC Cursor FOR SELECT Col1 FROM #results 
OPEN WC 
FETCH NEXT FROM WC INTO @var1 WHILE (@@FETCH_STATUS > -1) 
BEGIN SET @msg = 'Deleting ' + CONVERT(varchar(10), @var1) RAISERROR(@msg,0,1) WITH NOWAIT   
EXEC spDeleteUpdate @localUpdateID=@var1 
FETCH NEXT FROM WC INTO @var1 
END 
CLOSE WC 
DEALLOCATE WC 
DROP TABLE #results
Das macht dasselbe, was der Assistent tun sollte, allerdings ohne in diese doofen Timeouts zu laufen.
Bisher stabil 15 Updates in 30 min. gelöscht. Immerhin....

Das ist nicht neu, ich habe das selbst vor einiger Zeit schonmal so gelöst, aber da ich es hier nicht gefunden habe und auch im Netz den ganzen Abend nochmal rumgesucht habe, hier nochmal in diesem Forum... face-wink

LG
Buc

Edit: Ich habe mein MS-Bashing vergessen: face-wink

WAS MACHEN DIE DA IN REDMOND MIT DEN UPDATES????
Rollen da demnächst Köpfe, oder ist das Teil einer nicht kommunizierten Strategie???
Seit Jahren werden Probleme mit dem WSUS auch in entsprechenden MS Foren diskutiert und Workarounds angeboten.
Statt dass aber der WSUS Assistent mal gefixt würde... Niente. Nix. Nothing. Die "Community" hats doch gelöst. Haben wir hier Open Source Verhältnisse? Oder bezahlen wir deren Produkte noch?

Sicherheitslücken können in 90 Tagen nicht mehr gefixt werden, Patchdays fallen nun komplett aus. Ich bin kein Programmierer, aber mein gehasstes Google hat Gründe diese 90-Tage-Frist zu setzen....
Könnten die in den 50ern gelandeten Aliens den Laden nun komplett übernommmen haben und Anpassungsschwierigkeiten haben?

Ist das ein Kampf zwischen denen aus dem Andromeda-Nebel und den Klingonen?

Oder sind die Manager da so doof, wie ich befürchte?

Wann wird von einem frustrierten MS-Entwickler der Windows Code geleaked?
Warum erfahren wir auf Wikileaks nur Details zu unmoralischen Aktionen demokratisch gewählter Regierungen und nichts von weltbeherrschenden undemokratischen Informationstechnologiekonzernen?
Das wäre mal spannend! face-wink

Fragen über Fragen... Und nur weil der blöde WSUS-Bereinigungs-Assistent mal wieder hing....
Assoziationsketten sind lustig. face-wink
Jetzt gehts mir aber wieder besser, falls jemand sich fragen sollte....

Content-Key: 330038

Url: https://administrator.de/contentid/330038

Ausgedruckt am: 19.03.2024 um 07:03 Uhr

Mitglied: 117471
117471 21.02.2017 um 08:33:00 Uhr
Goto Top
Hallo,

ich mache das tatsächlich mit einer manuellen SQL-Abfrage, deren Ergebnis ich in Notepad++ paste.

Dort erweitere ich den Inhalt via Macrorekorder in Löschbefehle und paste das zurück.

2 Minuten Aufwand face-smile

Gruß,
Jörg
Mitglied: Tektronix
Tektronix 21.02.2017 um 08:59:19 Uhr
Goto Top
Hallo,

ich habe die WSUS Bereinigung über die Aufgabenplanung mit Powershell gemacht.
Batch zum Aufruf des Powershellscripts:
@echo off 
set log=c:\psskript\wsus-cleanup.log 
set cleanupscript=c:\wsus\WSUS-Serverbereinigung.ps1 
set wsus-server-01=Server.xxxx.local 


echo. >> "%log%"   
echo ############################################################ >> "%log%"   
echo. >> "%log%"   
echo. >> "%log%"  

echo Cleanup Report %wsus-server-01% on %date%: >> "%log%"   
echo ------------------------------------------------------------ >> "%log%"   
"%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe" "%cleanupscript%" %wsus-server-01% >> "%log%"  

Powershellscript:
#Region VARIABLES

# WSUS Connection Parameters:
[String]$updateServer = "server.xxxx.local"  
[Boolean]$useSecureConnection = $False
[Int32]$portNumber = 80

# Cleanup Parameters:
# Decline updates that have not been approved for 30 days or more, are not currently needed by any clients, and are superseded by an aproved update.
[Boolean]$supersededUpdates = $True
# Decline updates that aren't approved and have been expired my Microsoft. 
[Boolean]$expiredUpdates = $True
# Delete updates that are expired and have not been approved for 30 days or more.
[Boolean]$obsoleteUpdates = $True
# Delete older update revisions that have not been approved for 30 days or more.
[Boolean]$compressUpdates = $True
# Delete computers that have not contacted the server in 30 days or more.
[Boolean]$obsoleteComputers = $True
# Delete update files that aren't needed by updates or downstream servers. 
[Boolean]$unneededContentFiles = $True

#EndRegion VARIABLES

#Region SCRIPT

# Load .NET assembly
[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")  

# Connect to WSUS Server
$Wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer($updateServer,$useSecureConnection,$portNumber)

# Perform Cleanup
$CleanupManager = $Wsus.GetCleanupManager()
$CleanupScope = New-Object Microsoft.UpdateServices.Administration.CleanupScope($supersededUpdates,$expiredUpdates,$obsoleteUpdates,$compressUpdates,$obsoleteComputers,$unneededContentFiles)
$CleanupManager.PerformCleanup($CleanupScope)

#EndRegion SCRIPT

Wichtig ist hierbei den richtigen WSUS Port anzugeben.
Mitglied: 117471
117471 21.02.2017 um 12:54:41 Uhr
Goto Top
Huhu,

yupp - aber wenn Du erst einmal so weit bist wie unser Forenpirat, fliegen Dir deine Scripte ebenfalls mit einem Timeout um die Ohren. Auch dann, wenn Du den Timeout-Wert im SQL-Server auf "unendlich" gedreht hast.

Glaub 's uns einfach face-smile

Gruß,
Jörg
Mitglied: the-buccaneer
the-buccaneer 23.02.2017 um 23:27:52 Uhr
Goto Top
Jo FA-jka.
das mit der Powershell hatte ich natürlich hinter mir.
2 min. Aufwand? Nicht schlecht. Kannste mal den Weg genauer beschreiben?
Wäre evtl. dem einen oder anderen Geplagten nützlich.

Trotzdem Danke Tektronix!

Auch die obige Abfrage blieb übrigens irgendwann hängen, da sie wg. irgendwelcher Ressourcenprobleme geopfert wurde und liess sich nicht mehr neu starten... (evtl. die nächtliche Synchronisierung?)
Nach einem Reboot des Servers lief aber der Assistent wieder durch und die störende ungelöschte #results Tabelle war dann auch wieder weg, so dass auch diese Abfrage wieder durchlief.

Buc
Mitglied: Tommsn
Tommsn 08.01.2018 aktualisiert um 09:10:12 Uhr
Goto Top
Hallo Tektronix,
mit deinem Powershellscript bekomm ich eine Fehlermeldung:
Ausnahme beim Aufrufen von "PerformCleanup" mit 1 Argument(en):  "@errorMessage  
spDeleteUpdate got error from spDeleteRevision"  
In C:\Users\administrator\Downloads\wsuscleanup.ps1:28 Zeichen:1
+ $CleanupManager.PerformCleanup($CleanupScope)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodInvocationException
    + FullyQualifiedErrorId : SqlException

Was ist das?

Auch wenn ich das obige Script von the-buccaneer im sclmanager ausführe, bekomme ich folgende Fehler:
(44 Zeile(n) betroffen)
Deleting 549068
Meldung 50000, Ebene 16, Status 1, Prozedur spDeleteRevision, Zeile 33
@errorMessage
Meldung 50000, Ebene 16, Status 1, Prozedur spDeleteUpdate, Zeile 72
spDeleteUpdate got error from spDeleteRevision
Deleting 549067
Meldung 50000, Ebene 16, Status 1, Prozedur spDeleteRevision, Zeile 33
@errorMessage
Meldung 50000, Ebene 16, Status 1, Prozedur spDeleteUpdate, Zeile 72
spDeleteUpdate got error from spDeleteRevision
.... geht noch viel weiter 

Kann mir da jemand helfen? Der WSUS läuft eigentlich, nur das Cleanup der "Nicht verwendete Updates und Updaterevisionen" geht nicht durch, da kommt dann der Datenbankfehler...
Wir haben den WSUS 2012r2 mit den akutellsten Aupdates laufen....
und: der SQL Timeputwert ist schon auf "0" gesetzt ...
Mitglied: Tektronix
Tektronix 08.01.2018 um 09:11:53 Uhr
Goto Top
Hallo,
Hast Du einen SQL Server aufgesetzt oder Windows InternalDatabase?
Mit Windows Internal Database hatte ich nix als Ärger. Ich hab mir dann SQL-Express aufgesetzt, dann lief es.
Ich hatte auch ständig "Serverknoten zurücksetzen" Meldungen mit der Windows Internal Database.
Greez
Mitglied: Tommsn
Tommsn 08.01.2018 um 09:14:27 Uhr
Goto Top
ja, der WSUS läuft mit der internen DB...
Mitglied: Tommsn
Tommsn 08.01.2018 um 15:19:08 Uhr
Goto Top
Hi nochmal
ich habe jetzt die WSU DB auf einem richtigen SWL 2012 Server laufen, und trozdem kann ich bestimmte Updates einfach nicht löschen. Wenn ich versuche ein update mit
exec spDeleteUpdate @localUpdateID=549068
versuche zu löschen, kommt immer diese Meldung in Rot:
Meldung 50000, Ebene 16, Status 1, Prozedur spDeleteRevision, Zeile 33
@errorMessage
Meldung 50000, Ebene 16, Status 1, Prozedur spDeleteUpdate, Zeile 72
spDeleteUpdate got error from spDeleteRevision
Egal bei welcher ID ich das versuche face-confused Ich finde im Internet nichts mehr was mir weiterhilft, hat jemand noch eine Idee?
Mitglied: Tektronix
Tektronix 08.01.2018 um 16:52:38 Uhr
Goto Top
Hallo,
schau Dir das mal an: WSUS.de.
Mitglied: Tommsn
Tommsn 08.01.2018 um 18:01:06 Uhr
Goto Top
Hi

da kommt nur "Du muss einen Suchbegriff eingeben!"
Mitglied: Tektronix
Tektronix 09.01.2018 um 08:49:55 Uhr
Goto Top
Moin,
sorry. Suchwort spDeleteUpdate.
Mitglied: 117471
117471 09.01.2018 aktualisiert um 09:22:36 Uhr
Goto Top
Hallo,

ich hätte da noch ein Script, welches auf einem 2008r2 WSUS (SBS2011) die Datenbank neu indiziert.

Würde das Abhilfe schaffen? Ich frage da sicherheitshalber noch mal nach; bevor ich hier jetzt etwas poste was jemanden dabei unterstützt, seine Datenbank zu schroten face-smile

Gruß,
Jörg