Freigeben über


Der vollständige Leitfaden zur Wartung von Microsoft WSUS und Configuration-Manager SUP

In diesem Artikel werden einige häufig gestellte Fragen zur WSUS-Wartung für Configuration Manager Umgebungen behandelt.

Ursprüngliche Produktversion: Windows Server, Windows Server Update Services, Configuration Manager
Ursprüngliche KB-Nummer: 4490644

Einführung

Fragen gehen oft wie folgt vor: Wie sollte ich diese Wartung in einer Configuration Manager-Umgebung ordnungsgemäß ausführen oder wie oft sollte ich diese Wartung ausführen? Es ist nicht ungewöhnlich, dass gewissenhafte Configuration Manager Administratoren nicht wissen, dass die WSUS-Wartung überhaupt ausgeführt werden sollte. Die meisten von uns richten nur WSUS-Server ein, da dies eine Voraussetzung für einen Softwareupdatepunkt (SUP) ist. Sobald das SUP eingerichtet ist, schließen wir die WSUS-Konsole und geben an, dass sie nicht vorhanden ist. Leider kann dies für Configuration Manager Clients und die Gesamtleistung des WSUS/SUP-Servers problematisch sein.

Mit dem Verständnis, dass diese Wartung durchgeführt werden muss, fragen Sie sich, welche Wartung Sie ausführen müssen und wie oft Sie sie ausführen müssen. Die Antwort lautet, dass Sie monatliche Wartungsarbeiten durchführen sollten. Die Wartung ist einfach und dauert nicht lange für WSUS-Server, die von Anfang an gut gewartet wurden. Wenn die WSUS-Wartung jedoch etwas länger dauert, kann die Bereinigung beim ersten Mal schwieriger oder zeitaufwändiger sein. In den nächsten Monaten wird es viel einfacher oder schneller sein.

Weitere Informationen zu präzisen Schritten und automatischen Skripts finden Sie unter Manuelle und automatische WSUS-Datenbankwartung.

Verwalten von WSUS während der Unterstützung Configuration Manager aktuellen Branch-Version 1906 und höher

Wenn Sie Configuration Manager aktuelle Branch-Version 1906 oder höher verwenden, empfehlen wir, die WSUS-Wartungsoptionen in der Konfiguration des Softwareupdatepunkts am Standort der obersten Ebene zu aktivieren, um die Bereinigungsverfahren nach jeder Synchronisierung zu automatisieren. Es würde effektiv alle in diesem Artikel beschriebenen Bereinigungsvorgänge behandeln, mit Ausnahme der Sicherung und Neuindizierung der WSUS-Datenbank. Sie sollten weiterhin die Sicherung der WSUS-Datenbank automatisieren und die WSUS-Datenbank nach einem Zeitplan neu indizieren.

Screenshot der WSUS-Wartungsoptionen in softwareupdatepunktkomponenten Eigenschaftenfenster.

Weitere Informationen zur Wartung von Softwareupdates in Configuration Manager finden Sie unter Wartung von Softwareupdates.

Wichtige Hinweise

Notiz

Wenn Sie die Wartungsfeatures verwenden, die in Configuration Manager, Version 1906, hinzugefügt wurden, müssen Sie diese Elemente nicht berücksichtigen, da Configuration Manager die Bereinigung nach jeder Synchronisierung übernimmt.

  1. Bevor Sie mit dem Wartungsvorgang beginnen, lesen Sie alle Informationen und Anweisungen in diesem Artikel.

  2. Wenn WSUS zusammen mit nachgeschalteten Servern verwendet wird, werden WSUS-Server von oben nach unten hinzugefügt, sollten aber von unten nach oben entfernt werden. Beim Synchronisieren oder Hinzufügen von Updates wechseln sie zuerst zum Upstream-WSUS-Server und replizieren dann auf die nachgelagerten Server. Wenn Sie eine Bereinigung durchführen und Elemente von WSUS-Servern entfernen, sollten Sie ganz unten in der Hierarchie beginnen.

  3. WSUS-Wartung kann gleichzeitig auf mehreren Servern auf derselben Ebene ausgeführt werden. Stellen Sie dabei sicher, dass eine Ebene ausgeführt wird, bevor Sie auf die nächste ebene wechseln. Die unten beschriebenen Schritte zum Bereinigen und erneuten Indizieren sollten auf allen WSUS-Servern ausgeführt werden, unabhängig davon, ob es sich um einen WSUS-Replikatserver handelt oder nicht. Weitere Informationen zum Ermitteln, ob ein WSUS-Server ein Replikat ist, finden Sie unter Ablehnen ersetzter Updates.

  4. Stellen Sie sicher, dass SUPs während des Wartungsvorgangs nicht synchronisiert werden, da dadurch möglicherweise bereits erledigte Arbeit verloren geht. Überprüfen Sie den SUP-Synchronisierungszeitplan, und legen Sie ihn während dieses Vorgangs vorübergehend auf manuell fest.

    Screenshot der Einstellung

  5. Wenn Sie mehrere SUPs des primären Standorts oder der Zentraladministration (CAS) haben, die die SUSDB nicht gemeinsam nutzen, sollten Sie den WSUS-Server, der mit dem ersten SUP auf der Website synchronisiert wird, als auf einer Ebene unterhalb der Website betrachten. Meine CAS-Website verfügt beispielsweise über zwei SUPs:

    • Die mit dem Namen "New " synchronisiert mit Microsoft Update, es wäre meine oberste Ebene (Stufe1).
    • Der Server mit dem Namen „2012“ wird mit „Neu“ synchronisiert und auf der zweiten Ebene berücksichtigt. Es kann gleichzeitig bereinigt werden, wenn ich alle meine anderen Tier2-Server ausführen würde, z. B. den einzelnen SUP meines primären Standorts.

    Screenshot der beiden Beispiel-SUPs.

Durchführen der WSUS-Wartung

Zu den grundlegenden Schritten, die für die ordnungsgemäße WSUS-Wartung erforderlich sind, gehören:

  1. Sichern der WSUS-Datenbank
  2. Erstellen von Indizes für benutzerdefinierte Felder
  3. Neuindizieren der WSUS-Datenbank
  4. Ablehnen überholter Updates und Ausführen der Wartungsarbeiten
  5. Der Assistent für die WSUS-Serverbereinigung.

Sichern der WSUS-Datenbank

Sichern Sie die WSUS-Datenbank (SUSDB) mithilfe der gewünschten Methode. Weitere Informationen finden Sie unter Erstellen einer vollständigen Datenbanksicherung.

Erstellen von Indizes für benutzerdefinierte Felder

Dieser Prozess ist optional, wird jedoch empfohlen. Er verbessert die Leistung bei nachfolgenden Bereinigungsvorgängen erheblich.

Wenn Sie Configuration Manager aktuelle Verzweigungsversion 1906 oder höher verwenden, empfiehlt es sich, Configuration Manager zum Erstellen der Indizes zu verwenden. Konfigurieren Sie zum Erstellen der Indizes die Option " Nicht gruppierte Indizes zur WSUS-Datenbank hinzufügen" in der Konfiguration des Softwareupdatepunkts für den obersten Standort.

Position der Option „Add non-clustered indexes to the WSUS database“ (Nicht gruppierte Indizes zur WSUS-Datenbank hinzufügen) in der SUP-Konfiguration des Configuration Manager.

Wenn Sie eine ältere Version von Configuration Manager oder eigenständigen WSUS-Servern verwenden, führen Sie die folgenden Schritte aus, um benutzerdefinierte Indizes in der SUSDB-Datenbank zu erstellen. Für jede SUSDB ist dies ein einmaliger Prozess.

  1. Stellen Sie sicher, dass Sie über eine Sicherung der SUSDB-Datenbank verfügen.

  2. Verwenden Sie SQL Management Studio, um eine Verbindung mit der SUSDB-Datenbank herzustellen, auf die gleiche Weise wie im Abschnitt "Erneutes Indizieren der WSUS-Datenbank " beschrieben.

  3. Führen Sie das folgende Skript für SUSDB aus, um zwei benutzerdefinierte Indizes zu erstellen:

    -- Create custom index in tbLocalizedPropertyForRevision
    USE [SUSDB]
    
    CREATE NONCLUSTERED INDEX [nclLocalizedPropertyID] ON [dbo].[tbLocalizedPropertyForRevision]
    (
         [LocalizedPropertyID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    
    -- Create custom index in tbRevisionSupersedesUpdate
    CREATE NONCLUSTERED INDEX [nclSupercededUpdateID] ON [dbo].[tbRevisionSupersedesUpdate]
    (
         [SupersededUpdateID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    

    Wenn zuvor benutzerdefinierte Indizes erstellt wurden, führt das erneute Ausführen des Skripts zu einem Fehler ähnlich dem folgenden:

    Meldung 1913, Ebene 16, Status 1, Zeile 1
    Fehler beim Vorgang, da in der Tabelle "dbo.tbLocalizedPropertyForRevision" bereits ein Index oder eine Statistik mit dem Namen "nclLocalizedPropertyID" vorhanden ist.

Neuindizieren der WSUS-Datenbank

Verwenden Sie zum erneuten Indizieren der WSUS-Datenbank (SUSDB) das T-SQL-Skript der WSUS-Datenbank erneut.

Die Schritte zum Herstellen einer Verbindung mit SUSDB und zum Durchführen der Neuindizierung unterscheiden sich je nachdem, ob SUSDB in SQL Server oder interne Windows-Datenbank (WID) ausgeführt wird. Um zu bestimmen, wo SUSDB ausgeführt wird, überprüfen Sie den Wert des SQLServerName Registrierungseintrags auf dem WSUS-Server, der HKEY_LOCAL_MACHINE\Software\Microsoft\Update Services\Server\Setup sich im Unterschlüssel befindet.

Wenn der Wert nur den Servernamen oder die Serverinstanz enthält, wird SUSDB auf einem SQL Server ausgeführt. Wenn der Wert die Zeichenfolge ##SSEE enthält oder ##WID darin enthalten ist, wird SUSDB in WID ausgeführt, wie gezeigt:

Screenshot von SqlServerName-SSEE.

Screenshot von SqlServerName-WID.

Wenn SUSDB auf WID installiert wurde

Wenn SUSDB auf WID installiert wurde, muss SQL Server Management Studio Express lokal installiert sein, um das Skript für die Neuindizierung ausführen zu können. Hier ist eine einfache Möglichkeit, um zu ermitteln, welche Version von SQL Server Management Studio Express installiert werden soll:

  • Windows Server 2012 und höhere Versionen

    • Wechseln Sie zu C:\Windows\WID\Log dem Fehlerprotokoll, das die Versionsnummer enthält, und suchen Sie es.

    • Ermitteln der Version, Edition und Updatestufe von SQL Server und seinen Komponenten Dieser Wert teilt Ihnen mit, welche Service Pack-Ebene (SP) WID ausgeführt wird. Schließen Sie die SP-Ebene ein, wenn Sie das Microsoft Download Center nach SQL Server Management Studio Express durchsuchen.

  • für Windows Server 2008 R2 (KB3139164)

    • Wechseln Sie mit Editor zum C:\Windows\SYSMSI\SSEE\MSSQL.2005\MSSQL\LOG letzten Fehlerprotokoll, und öffnen Sie es. Oben befindet sich eine Versionsnummer (z. B. 9.00.4035.00 x64). Ermitteln der Version, Edition und Updatestufe von SQL Server und seinen Komponenten Diese Versionsnummer gibt an, welche Service Pack-Ebene ausgeführt wird. Schließen Sie die SP-Ebene ein, wenn Sie das Microsoft Download Center nach SQL Server Management Studio Express durchsuchen.

Starten Sie SQL Server Management Studio Express nach der Installation, und geben Sie den Servernamen ein, mit dem eine Verbindung hergestellt werden soll:

  • Wenn das Betriebssystem Windows Server 2012 oder höher ist, verwenden Sie \\.\pipe\MICROSOFT##WID\tsql\query.
  • Wenn das Betriebssystem älter als Windows Server 2012 ist, geben Sie \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\queryein.

Wenn bei WID Fehler wie die folgenden auftreten, wenn Sie versuchen, eine Verbindung mit SUSDB mit SQL Server Management Studio (SSMS) herzustellen, versuchen Sie, SSMS mithilfe der Option "Als Administrator ausführen" zu starten.

Screenshot des Fehlers

Wenn SUSDB auf SQL Server installiert wurde

Wenn SUSDB vollständig SQL Server installiert wurde, starten Sie SQL Server Management Studio, und geben Sie den Namen des Servers (und bei Bedarf die Instanz) ein, wenn Sie dazu aufgefordert werden.

Tipp

Alternativ kann ein Hilfsprogramm namens sqlcmd verwendet werden, um das Skript für die Neuindizierung auszuführen. Weitere Informationen finden Sie auf der Seite mit der Übersicht.

Ausführen des Skripts

Um das Skript entweder in SQL Server Management Studio oder SQL Server Management Studio Express auszuführen, wählen Sie "Neue Abfrage" aus, fügen Sie das Skript in das Fenster ein, und wählen Sie dann "Ausführen" aus. Wenn der Vorgang abgeschlossen ist, wird in der Statusleiste eine erfolgreich ausgeführte Abfrage angezeigt. Und der Ergebnisbereich enthält Nachrichten, die sich darauf beziehen, welche Indizes neu erstellt wurden.

Führen Sie die SQL-Anweisung aus.

Screenshot des erfolgreichen Protokolls.

Ablehnen überholter Updates und Ausführen der Wartungsarbeiten

Ablehnen abgelöster Updates auf dem WSUS-Server, damit Clients effizienter scannen können. Stellen Sie vor der Degressierung von Updates sicher, dass die abgelösten Updates bereitgestellt werden und dass abgelöste Updates nicht mehr benötigt werden. Configuration Manager enthält eine separate Bereinigung, mit der ersetzte Updates basierend auf angegebenen Kriterien ablaufen können. Weitere Informationen finden Sie in den folgenden Artikeln:

Die folgende SQL-Abfrage kann für die SUSDB-Datenbank ausgeführt werden, um die Anzahl der ersetzten Updates schnell zu ermitteln. Wenn die Anzahl der abgelösten Updates höher als 1500 ist, kann dies verschiedene Probleme im Zusammenhang mit Softwareupdates auf Server- und Clientseite verursachen.

-- Find the number of superseded updates
Select COUNT(UpdateID) from vwMinimalUpdate where IsSuperseded=1 and Declined=0

Wenn Sie Configuration Manager aktuelle Branch-Version 1906 oder höher verwenden, empfehlen wir, dass Sie die ersetzten Updates automatisch ablehnen, indem Sie die Option "Abgelaufene Updates ablehnen" in WSUS gemäß der Option "Ersetzte Regeln" in der Konfiguration des Softwareupdatepunkts für die oberste Website aktivieren.

Screenshot der Option zum Ablehnen abgelaufener Updates in WSUS gemäß der Option

Wenn Sie diese Option verwenden, können Sie sehen, wie viele Updates abgelehnt wurden, indem Sie die Datei "WsyncMgr.log" überprüfen, nachdem der Synchronisierungsvorgang abgeschlossen ist. Wenn Sie diese Option verwenden, müssen Sie das weiter unten in diesem Abschnitt beschriebene Skript nicht verwenden (entweder durch manuelles Ausführen oder Einrichten als Aufgabe, um es nach einem Zeitplan auszuführen).

Wenn Sie eigenständige WSUS-Server oder eine ältere Version von Configuration Manager verwenden, können Sie ersetzte Updates mithilfe der WSUS-Konsole manuell ablehnen. Oder Sie können dieses PowerShell-Skript ausführen. Kopieren Und speichern Sie das Skript dann als Decline-SupersededUpdatesWithExclusionPeriod.ps1 Skriptdatei.

Notiz

Dieses Skript wird wie vorhanden bereitgestellt. Es sollte in einem Labor vollständig getestet werden, bevor Sie es in der Produktion verwenden. Microsoft übernimmt keineRlei Garantien in Bezug auf die Verwendung dieses Skripts. Führen Sie das Skript immer zuerst mit dem -SkipDecline Parameter aus, um eine Zusammenfassung zu erhalten, wie viele ersetzte Updates abgelehnt werden.

Wenn Configuration Manager auf sofortiges Ablaufen ersetzter Updates festgelegt ist (siehe unten), kann das PowerShell-Skript verwendet werden, um alle ersetzten Updates abzulehnen. Dies sollte auf allen autonomen WSUS-Servern in der Configuration Manager/WSUS-Hierarchie erfolgen.

Screenshot der Optionen für

Sie müssen das PowerShell-Skript nicht auf WSUS-Servern ausführen, die als Replikate festgelegt sind, z. B. suPs für sekundäre Standorte. Um festzustellen, ob ein WSUS-Server ein Replikat ist, überprüfen Sie die Einstellungen für die Updatequelle .

Screenshot der Option

Wenn Updates nicht so konfiguriert sind, dass sie in Configuration Manager sofort abgelaufen sind, muss das PowerShell-Skript mit einem Ausschlusszeitraum ausgeführt werden, der der Einstellung für Configuration Manager entspricht, nachdem die Anzahl der Tage abgelaufen ist, bis ersetzte Updates ablaufen. In diesem Fall würde es 60 Tage dauern, bis sup-Komponenteneigenschaften so konfiguriert sind, dass sie zwei Monate warten, bevor abgelöste Updates ablaufen:

Screenshot der Monate, die abgelaufen sind, ersetzte Updates.

Die folgenden Befehlszeilen veranschaulichen die verschiedenen Möglichkeiten, wie das PowerShell-Skript ausgeführt werden kann:

Notiz

Wenn Sie das Skript auf dem WSUS-Server ausführen, verwenden Sie LOCALHOST anstelle des tatsächlichen SERVERNAME.

Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -Port 8530 –SkipDecline

Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -Port 8530 –ExclusionPeriod 60

Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -Port 8530

Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -UseSSL -Port 8531

Ausführen des Skripts mit einem -SkipDecline und -ExclusionPeriod 60 Zum Sammeln von Informationen zu Updates auf dem WSUS-Server und anzahl der möglicherweise abgelehnten Updates:

Windows PowerShell-Fenster mit ausgeführten Parametern „SkipDecline“ und „ExclusionPeriod 60“.

Ausführen des Skripts mit -ExclusionPeriod 60, um abgelöste Updates, die älter als 60 Tage sind, abzulehnen:

Screenshot des Datenträgerverwaltungsfensters mit markiertem Datenträger 60.

Die Ausgabe- und Statusanzeigen werden angezeigt, während das Skript ausgeführt wird. Beachten Sie die SupersededUpdates.csv Datei, die eine Liste aller Updates enthält, die vom Skript abgelehnt werden:

Screenshot der Windows PowerShell Ausgabe- und Statusanzeige.

Notiz

Wenn Beim Versuch, das oben genannte PowerShell-Skript zu verwenden, um abgelöste Updates abzulehnen, Probleme auftreten, lesen Sie den Abschnitt "Ausführen des Decline-SupersededUpdatesWithExclusionPeriod.ps1 Skript-Timesouts beim Herstellen einer Verbindung mit dem WSUS-Server, oder während der Ausführung tritt ein 401-Fehler auf, um Schritte zur Problembehandlung zu erhalten.

Nachdem abgelöste Updates abgelehnt wurden, sollte SUSDB aus Gründen der besten Leistung erneut indiziert werden. Verwandte Informationen finden Sie unter Erneutes Indizieren der WSUS-Datenbank.

Der Assistent für die WSUS-Serverbereinigung.

Der WSUS-Serverbereinigungs-Assistent bietet Optionen zum Bereinigen der folgenden Elemente:

  • Nicht verwendete Updates und Aktualisierungsrevisionen (auch als veraltete Updates bezeichnet)
  • Computer, die keine Verbindung mit dem Server herstellen
  • Nicht benötigte Aktualisierungsdateien
  • Abgelaufene Updates
  • Ersetzte Updates

In einer Configuration Manager-Umgebung sind Computer, die keine Verbindung mit dem Server herstellen, und Optionen für nicht benötigte Updatedateien nicht relevant, da Configuration Manager Softwareupdateinhalte und -geräte verwaltet, es sei denn, die Optionen "Alle WSUS-Berichterstellungsereignisse erstellen" oder "Nur WSUS-Statusberichterstattungsereignisse erstellen" sind unter Softwareupdate-Synchronisierungseinstellungen. Wenn Sie eine dieser Optionen konfiguriert haben, sollten Sie die WSUS-Serverbereinigung automatisieren, um die Bereinigung dieser beiden Optionen durchzuführen.

Wenn Sie Configuration Manager aktuelle Verzweigungsversion 1906 oder eine höhere Version verwenden, behandelt die Aktivierung der Option "Abgelaufene Updates ablehnen" in WSUS gemäß der Option "Abgleichsregeln" die Degressierung abgelaufener Updates und ersetzter Updates basierend auf den in Configuration Manager angegebenen Regeln. Durch aktivieren der Option "Veraltete Updates aus der WSUS-Datenbank entfernen" in Configuration Manager aktuellen Verzweigungsversion 1906 wird die Bereinigung nicht verwendeter Updates und Aktualisierungsrevisionen (veraltete Updates) behandelt. Es wird empfohlen, diese Optionen in der Konfiguration des Softwareupdatepunkts auf der Website der obersten Ebene zu aktivieren, damit Configuration Manager die WSUS-Datenbank bereinigen können.

Screenshot der Option

Wenn Sie noch nie veraltete Updates aus der WSUS-Datenbank bereinigt haben, kann es zu einem Timeout für diese Aufgabe führen. Sie können WsyncMgr.log für weitere Informationen überprüfen und das IN DER HILFE angegebene SQL-Skript manuell ausführen! Mein WSUS läuft seit Jahren, ohne jemals Wartungsarbeiten durchgeführt zu haben, und der Bereinigungs-Assistent hält das Zeitlimit einmal aus, wodurch nachfolgende Versuche von Configuration Manager erfolgreich ausgeführt werden können. Weitere Informationen zur WSUS-Bereinigung und -Wartung in Configuration Manager finden Sie in den Dokumenten.

Bei eigenständigen WSUS-Servern oder bei Verwendung einer älteren Version von Configuration Manager wird empfohlen, den WSUS-Bereinigungs-Assistenten regelmäßig auszuführen. Wenn der WSUS-Serverbereinigungs-Assistent noch nie ausgeführt wurde und der WSUS eine Zeit lang in produktion ist, kann es zu einem Timeout bei der Bereinigung kommen. In diesem Fall führen Sie zuerst eine erneute Indizierung mit Schritt 2 und Schritt 3 durch, und führen Sie dann die Bereinigung aus, wobei nur die Option "Nicht verwendete Updates und Aktualisierungsaktualisierungen " aktiviert ist.

Wenn Sie den WSUS-Bereinigungs-Assistenten noch nie ausgeführt haben, sind möglicherweise einige Änderungen erforderlich, um die Bereinigung mit nicht verwendeten Updates und Aktualisierungsrevisionen auszuführen. Wenn es zu einem Timeout kommt, führen Sie es erneut aus, bis es abgeschlossen ist, und führen Sie dann jeweils eine der anderen Optionen aus. Führen Sie schließlich einen vollständigen Durchlauf durch, wobei alle Optionen aktiviert sind. Wenn Timeouts weiterhin auftreten, lesen Sie die SQL Server Alternative in der HILFE! Mein WSUS läuft seit Jahren, ohne jemals Wartungsarbeiten durchgeführt zu haben, und der Bereinigungs-Assistent hält das Timing aus. Es kann mehrere Stunden oder Tage dauern, bis der Serverbereinigungs-Assistent oder die SQL-Alternative bis zum Abschluss ausgeführt wird.

Der WSUS-Serverbereinigungs-Assistent wird über die WSUS-Konsole ausgeführt. Es befindet sich unter "Optionen", wie hier gezeigt:

Screenshot der Speicherortseite des WSUS-Serverbereinigungs-Assistenten.

Weitere Informationen finden Sie unter Anzeigen des SQL Server-Fehlerprotokolls.

Screenshot der Startseite des WSUS-Serverbereinigungs-Assistenten.

Nachdem die Anzahl der entfernten Elemente gemeldet wurde, wird die Bereinigung abgeschlossen. Wenn diese Informationen auf Ihrem WSUS-Server nicht zurückgegeben werden, kann davon ausgegangen werden, dass das Zeitüberschreitungstimeup für die Bereinigung aufgetreten ist. In diesem Fall müssen Sie sie erneut starten oder die SQL-Alternative verwenden.

Der Assistent für die WSUS-Serverbereinigung nach Abschluss des Vorgangs.

Nachdem abgelöste Updates abgelehnt wurden, sollte SUSDB aus Gründen der besten Leistung erneut indiziert werden. Weitere Informationen finden Sie im Abschnitt "Erneutes Indizieren der WSUS-Datenbank ".

Problembehandlung

Hilfe Mein WSUS läuft seit Jahren, ohne jemals Wartungsarbeiten durchgeführt zu haben, und der Bereinigungs-Assistent hält das Zeitlimit aus

Hier gibt es zwei verschiedene Optionen:

  1. Installieren Sie WSUS erneut mit einer neuen Datenbank. Es gibt eine Reihe von Einschränkungen im Zusammenhang mit diesem Thema, einschließlich der Länge der ersten Synchronisierung und vollständiger Clientscans gegen SUSDB im Vergleich zu Differenzialscans.

  2. Stellen Sie sicher, dass Sie über eine Sicherung der SUSDB-Datenbank verfügen, und führen Sie dann eine erneute Indizierung aus. Führen Sie nach Abschluss dieses Vorgangs das folgende Skript in SQL Server Management Studio oder SQL Server Management Studio Express aus. Befolgen Sie nach Abschluss des Vorgangs alle oben genannten Anweisungen für die Ausführung der Wartung. Dieser letzte Schritt ist erforderlich, da die spDeleteUpdate gespeicherte Prozedur nur nicht verwendete Updates und Aktualisierungen entfernt.

Notiz

Bevor Sie das Skript ausführen, führen Sie die Schritte in der gespeicherten SpDeleteUpdate-Prozedur langsam aus , um die Leistung der Ausführung von spDeleteUpdatezu verbessern.

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

Beim Ausführen des Decline-SupersededUpdatesWithExclusionPeriod.ps1-Skripts tritt beim Herstellen einer Verbindung mit dem WSUS-Server ein Zeitüberschreitungsfehler auf, oder während der Ausführung tritt ein 401-Fehler auf.

Wenn Fehler auftreten, wenn Sie versuchen, das PowerShell-Skript zu verwenden, um abgelöste Updates abzulehnen, kann ein alternatives SQL-Skript für SUDB ausgeführt werden.

  1. Wenn Configuration Manager zusammen mit WSUS verwendet wird, überprüfen Sie die Software Update Point Component Properties>Supersedence Rules, um zu sehen, wie schnell abgelöste Updates ablaufen, z. B. unmittelbar oder nach X Monaten. Notieren Sie sich den Pfad dieser Datei.

    Screenshot der Supersedence-Regeln.

  2. Wenn Sie die SUSDB-Datenbank nicht gesichert haben, tun Sie dies, bevor Sie fortfahren.

  3. Verwenden Sie SQL Server Management Studio, um eine Verbindung mit SUSDB herzustellen.

  4. Führen Sie die folgende Abfrage aus. Die Zahl 90 in der Zeile, die Dies enthält DECLARE @thresholdDays INT = 90 , sollte mit den Absteigungsregeln aus Schritt 1 dieses Verfahrens und der richtigen Anzahl von Tagen übereinstimmen, die der Anzahl der Monate entspricht, die in den Regeln für die Außerpositionierung konfiguriert sind. Wenn dieser Wert sofort abläuft, sollte der Wert in der SQL-Abfrage @thresholdDays auf Null festgelegt werden.

    -- Decline superseded updates in SUSDB; alternative to Decline-SupersededUpdatesWithExclusionPeriod.ps1
    DECLARE @thresholdDays INT = 90 -- Specify the number of days between today and the release date for which the superseded updates must not be declined (i.e., updates older than 90 days). This should match configuration of supersedence rules in SUP component properties, if ConfigMgr is being used with WSUS.
    DECLARE @testRun BIT = 0 -- Set this to 1 to test without declining anything.
    -- There shouldn't be any need to modify anything after this line.
    
    DECLARE @uid UNIQUEIDENTIFIER
    DECLARE @title NVARCHAR(500)
    DECLARE @date DATETIME
    DECLARE @userName NVARCHAR(100) = SYSTEM_USER
    
    DECLARE @count INT = 0
    
    DECLARE DU CURSOR FOR
      SELECT MU.UpdateID, U.DefaultTitle, U.CreationDate FROM vwMinimalUpdate MU
      JOIN PUBLIC_VIEWS.vUpdate U ON MU.UpdateID = U.UpdateId
    WHERE MU.IsSuperseded = 1 AND MU.Declined = 0 AND MU.IsLatestRevision = 1
      AND MU.CreationDate < DATEADD(dd,-@thresholdDays,GETDATE())
    ORDER BY MU.CreationDate
    
    PRINT 'Declining superseded updates older than ' + CONVERT(NVARCHAR(5), @thresholdDays) + ' days.' + CHAR(10)
    
    OPEN DU
    FETCH NEXT FROM DU INTO @uid, @title, @date
    WHILE (@@FETCH_STATUS > - 1)
    BEGIN
      SET @count = @count + 1
      PRINT 'Declining update ' + CONVERT(NVARCHAR(50), @uid) + ' (Creation Date ' + CONVERT(NVARCHAR(50), @date) + ') - ' + @title + ' ...'
      IF @testRun = 0
         EXEC spDeclineUpdate @updateID = @uid, @adminName = @userName, @failIfReplica = 1
      FETCH NEXT FROM DU INTO @uid, @title, @date
    END
    
    CLOSE DU
    DEALLOCATE DU
    
    PRINT CHAR(10) + 'Attempted to decline ' + CONVERT(NVARCHAR(10), @count) + ' updates.'
    
  5. Um den Status zu überprüfen, überwachen Sie die Registerkarte " Nachrichten " im Bereich "Ergebnisse ".

Was geschieht, wenn ich herausfinde, dass ich eines der Updates benötigt habe, die ich abgelehnt habe?

Wenn Sie eines dieser abgelehnten Updates in Configuration Manager benötigen, können Sie es in WSUS zurückgeben, indem Sie mit der rechten Maustaste auf das Update klicken und "Genehmigen" auswählen. Ändern Sie die Genehmigung in "Nicht genehmigt", und synchronisieren Sie dann das SUP erneut, um das Update wieder einzubringen.

Screenshot des Bildschirms

Wenn das Update nicht mehr in WSUS enthalten ist, kann es aus dem Microsoft Update-Katalog importiert werden, wenn es nicht abgelaufen ist oder aus dem Katalog entfernt wurde.

Importieren von Updates in WSUS.

Automatisieren der WSUS-Wartung

Notiz

Wenn Sie Configuration Manager Version1906 oder höher verwenden, automatisieren Sie die Bereinigungsverfahren, indem Sie die WSUS-Wartungsoptionen in der Softwareupdatepunktkonfiguration des Standorts der obersten Ebene aktivieren. Diese Optionen behandeln alle Bereinigungsvorgänge, die vom WSUS-Serverbereinigungs-Assistenten ausgeführt werden. Sie sollten die WSUS-Datenbank jedoch weiterhin automatisch sichern und nach einem Zeitplan neu indizieren.

WSUS-Wartungsaufgaben können automatisiert werden, vorausgesetzt, dass zuerst einige Anforderungen erfüllt sind.

  1. Wenn Sie die WSUS-Bereinigung noch nie ausgeführt haben, müssen Sie die ersten beiden Bereinigungen manuell durchführen. Ihre zweite manuelle Bereinigung sollte 30 Tage nach der ersten ausgeführt werden, da es 30 Tage dauert, bis einige Updates und Aktualisierungen veraltet sind. Es gibt bestimmte Gründe, warum Sie die Automatisierung erst nach der zweiten Bereinigung ausführen möchten. Ihre erste Bereinigung wird wahrscheinlich länger als normal ausgeführt. Sie können also nicht beurteilen, wie lange diese Wartung normalerweise dauert. Die zweite Bereinigung ist ein viel besserer Indikator dafür, was für Ihre Computer normal ist. Dies ist wichtig, da Sie herausfinden müssen, wie lange jeder Schritt als Basisplan dauert (ich möchte auch etwa 30-Minuten-Wiggle-Raum hinzufügen), damit Sie den Zeitplan bestimmen können.

  2. Wenn Sie über nachgeschaltete WSUS-Server verfügen, müssen Sie zuerst wartungsarbeiten und dann die Upstreamserver ausführen.

  3. Um die Neuindizierung der SUSDB zu planen, benötigen Sie eine Vollversion von SQL Server. interne Windows-Datenbank (WID) ist nicht in der Lage, eine Wartungsaufgabe über SQL Server Management Studio Express zu planen. Dennoch können Sie in Fällen, in denen WID verwendet wird, den Taskplaner mit SQLCMD den oben erwähnten verwenden. Wenn Sie diesen Weg gehen, ist es wichtig, dass Sie Ihre WSUS-Server/SUPs während dieses Wartungszeitraums nicht synchronisieren! Wenn Sie dies tun, ist es möglich, dass Ihre nachgeschalteten Server alle Updates, die Sie gerade zu bereinigen versucht haben, neu synchronisieren. Ich beplane dies über Nacht vor meiner AM-Synchronisierung, sodass ich Zeit habe, sie zu überprüfen, bevor meine Synchronisierung ausgeführt wird.

Benötigte/hilfreiche Links:

WSUS-Bereinigungsskript

Notiz

Wenn Sie das Skript auf dem WSUS-Server ausführen, verwenden Sie LOCALHOST anstelle des tatsächlichen SERVERNAME. PORT Ersetzen Sie außerdem durch die verwendete.

[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")`
 | out-null
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer("SERVERNAME",$true,PORT);
$cleanupScope = new-object Microsoft.UpdateServices.Administration.CleanupScope;
$cleanupScope.DeclineSupersededUpdates = $true
$cleanupScope.DeclineExpiredUpdates = $true
$cleanupScope.CleanupObsoleteUpdates = $true
$cleanupScope.CompressUpdates = $true
#$cleanupScope.CleanupObsoleteComputers = $true
$cleanupScope.CleanupUnneededContentFiles = $true
$cleanupManager = $wsus.GetCleanupManager();
$cleanupManager.PerformCleanup($cleanupScope);

Einrichten des WSUS-Bereinigungsvorgangs in der Aufgabenplanung

Notiz

Wie bereits erwähnt, automatisieren Sie, wenn Sie Configuration Manager aktuelle Branch-Version 1906 oder eine höhere Version verwenden, die Bereinigungsverfahren, indem Sie die WSUS-Wartungsoptionen in der Konfiguration des Softwareupdatepunkts der Website auf oberster Ebene aktivieren. Für eigenständige WSUS-Server oder ältere Versionen von Configuration Manager können Sie die folgenden Schritte ausführen.

Der im vorherigen Abschnitt erwähnte Weekend Scripter-Blogbeitrag enthält grundlegende Wegbeschreibungen und Problembehandlung für diesen Schritt. Ich werde Sie jedoch in den folgenden Schritten durch den Prozess führen.

  1. Öffnen Sie den Aufgabenplaner , und wählen Sie "Aufgabe erstellen" aus. Legen Sie auf der Registerkarte " Allgemein " den Namen der Aufgabe fest, den Benutzer, als den Sie das PowerShell-Skript ausführen möchten (die meisten Benutzer verwenden ein Dienstkonto). Wählen Sie "Ausführen" aus, ob ein Benutzer angemeldet ist oder nicht, und fügen Sie bei Bedarf eine Beschreibung hinzu.

    Screenshot des WSUS-Bildschirms

  2. Fügen Sie auf der Registerkarte "Aktionen " eine neue Aktion hinzu, und geben Sie das Programm/Skript an, das/das Sie ausführen möchten. In diesem Fall müssen wir PowerShell verwenden und auf die PS1-Datei verweisen, die ausgeführt werden soll. Sie können das WSUS-Bereinigungsskript verwenden. Dieses Skript führt Bereinigungsoptionen aus, die Configuration Manager aktuellen Verzweigungsversion 1906 nicht funktioniert. Sie können die Kommentare aufheben, wenn Sie eigenständige WSUS oder eine ältere Version von Configuration Manager verwenden. Wenn Sie ein Protokoll wünschen, können Sie die letzte Zeile des Skripts wie folgt ändern:

    Notiz

    Wenn Sie das Skript auf dem WSUS-Server ausführen, verwenden Sie LOCALHOST anstelle des tatsächlichen SERVERNAME. PORT Ersetzen Sie außerdem durch die verwendete.

    [reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | out-null
    $wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer("SERVERNAME",$true,PORT);
    $cleanupScope = new-object Microsoft.UpdateServices.Administration.CleanupScope;
    # $cleanupScope.DeclineSupersededUpdates = $true # Performed by CM1906
    # $cleanupScope.DeclineExpiredUpdates    = $true # Performed by CM1906
    # $cleanupScope.CleanupObsoleteUpdates   = $true # Performed by CM1906
    $cleanupScope.CompressUpdates          = $true
    $cleanupScope.CleanupObsoleteComputers = $true
    $cleanupScope.CleanupUnneededContentFiles = $true
    $cleanupManager = $wsus.GetCleanupManager();
    $cleanupManager.PerformCleanup($cleanupScope) | Out-File C:\WSUS\WsusClean.txt;
    

    Wenn Sie speichern, erhalten Sie eine Info/Warnung im Aufgabenplanungsmodul. Diese Warnung kann ignoriert werden.

    Hinzufügen einer Skriptzeile in WSUS, um die Aufgabe zu starten.

  3. Legen Sie auf der Registerkarte "Trigger" Ihren Zeitplan einmal im Monat oder nach einem beliebigen Zeitplan fest. Auch hier müssen Sie sicherstellen, dass Sie WSUS nicht während der gesamten Bereinigungs- und Indizierungszeit synchronisieren.

    Legen Sie in „Trigger bearbeiten“ den WSUS-Trigger für die Aufgabe fest.

  4. Legen Sie auch andere Bedingungen oder Einstellungen fest, die Sie optimieren möchten. Wenn Sie die Aufgabe speichern, werden Sie möglicherweise zur Eingabe der Anmeldeinformationen des Benutzers " Ausführen als " aufgefordert.

  5. Sie können diese Schritte auch verwenden, um das Decline-SupersededUpdatesWithExclusionPeriod.ps1 Skript so zu konfigurieren, dass es alle drei Monate ausgeführt wird. Normalerweise habe ich dieses Skript so festgelegt, dass es vor den anderen Bereinigungsschritten ausgeführt wird, aber erst, nachdem ich es manuell ausgeführt und sichergestellt habe, dass es erfolgreich abgeschlossen wurde. Ich laufe alle drei Monate um 12:00 Uhr am ersten Sonntag.

Einrichten der SUSDB-Neuindizierung für WID mit SQLCMD und Task Scheduler

  1. Speichern Sie das WSUS-Datenbankskript erneut als SQL-Datei (z. B. SUSDBMaint.sql).

  2. Erstellen Sie eine grundlegende Aufgabe, und geben Sie ihr einen Namen:

    WSUS-Bildschirm „Assistent für das Erstellen einfacher Aufgaben“.

  3. Planen Sie diesen Vorgang so, dass er etwa 30 Minuten beginnt, nachdem Sie davon ausgehen, dass die Bereinigung abgeschlossen ist. Meine Bereinigung läuft jeden ersten Sonntag um 1:00 Uhr. Es dauert ca. 30 Minuten, um zu laufen, und ich werde es weitere 30 Minuten geben, bevor ich meine erneute Indizierung beginne. Das bedeutet, dass ich diese Aufgabe für jeden ersten Sonntag um 02:00 Uhr planen würde, wie hier gezeigt:

    Legen Sie die Häufigkeit für diese Aufgabe im Bildschirm „Assistent für das Erstellen einfacher Aufgaben“ fest.

  4. Wählen Sie die Aktion zum Starten eines Programms aus. Geben Sie im Feld "Programm/Skript " den folgenden Befehl ein. Die nach dem -i Parameter angegebene Datei ist der Pfad zu dem SQL-Skript, das Sie in Schritt 1 gespeichert haben. Die nach dem Parameter angegebene Datei ist die -o Stelle, an der das Protokoll platziert werden soll. Hier sehen Sie ein Beispiel:

    "C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SQLCMD.exe" -S \\.\pipe\Microsoft##WID\tsql\query -i C:\WSUS\SUSDBMaint.sql -o c:\WSUS\reindexout.txt

    Das Skript im Bildschirm „Assistent für das Erstellen einfacher Aufgaben“.

  5. Sie erhalten eine Warnung, ähnlich der, die Sie beim Erstellen der Bereinigungsaufgabe erhalten haben. Wählen Sie "Ja " aus, um die Argumente zu akzeptieren, und wählen Sie dann "Fertig stellen " aus, um sie anzuwenden:

    Bestätigungspopupfenster in der Aufgabenplanung.

  6. Sie können das Skript testen, indem Sie es zur Ausführung zwingen und das Protokoll auf Fehler überprüfen. Wenn Probleme auftreten, werden Sie im Protokoll darüber informiert. Wenn ein Fehler auftritt, verfügt das Konto, das die Aufgabe ausführt, normalerweise nicht über die entsprechenden Berechtigungen, oder der WID-Dienst wird nicht gestartet.

Einrichten einer grundlegenden geplanten Wartungsaufgabe in SQL für Nicht-WID-SUSDBs

Notiz

Sie müssen ein Sysadmin in SQL Server sein, um Wartungspläne erstellen oder verwalten zu können.

  1. Starten Sie Microsoft SQL Server Management Studio, und stellen Sie eine Verbindung mit der lokalen Serverinstanz her. Erweitern Sie "Verwaltung", klicken Sie mit der rechten Maustaste auf Wartungspläne, und wählen Sie dann "Neuer Wartungsplan" aus. Geben Sie Ihrem Plan einen Namen.

    Geben Sie einen Namen für Ihren WSUS-Wartungsplan ein.

  2. Wählen Sie "Unterplan1 " aus, und stellen Sie sicher, dass sich die Toolbox im Kontext befindet:

    Stellen Sie sicher, dass der Kontext Ihrer Toolbox stimmt.

  3. Fügen Sie die Aufgabe „Task 'T-SQL-Anweisung ausführen'“ per Drag & Drop ein.

    Screenshot der Option

  4. Klicken Sie mit der rechten Maustaste auf „Windows.edb“, und wählen Sie dann Eigenschaften aus. Kopieren Sie das WSUS-Neuindizierungsskript, und fügen Sie es ein. Klicken Sie dann auf „OK“.

    Screenshot zum Kopieren und Einfügen des WSUS-Skripts zum erneuten Indizieren.

  5. Planen Sie die Ausführung dieses Vorgangs ungefähr 30 Minuten, nachdem Sie davon ausgehen, dass die Bereinigung abgeschlossen ist. Meine Bereinigung läuft jeden ersten Sonntag um 1:00 Uhr. Die Ausführung dauert ca. 30 Minuten, und ich werde ihm weitere 30 Minuten geben, bevor ich mit der erneuten Indizierung beginne. Dies bedeutet, dass ich diese Aufgabe jeden ersten Sonntag um 02:00 Uhr planen würde.

    WSUS-Bildschirm „Neuer Auftragszeitplan“.

  6. Erwägen Sie beim Erstellen des Wartungsplans auch das Hinzufügen einer Sicherung der SUSDB in den Plan. I usually back up first, then reindex. Möglicherweise wird dem Zeitplan mehr Zeit hinzugefügt.

Zusammenfügen des Gesamtbilds

Wenn sie in einer Hierarchie ausgeführt wird, sollte die WSUS-Bereinigungsausführung vom unteren Rand der Hierarchie nach oben erfolgen. Wenn Sie das Skript jedoch verwenden, um abgelöste Updates abzulehnen, sollte die Ausführung von oben nach unten erfolgen. Degressive ersetzte Updates sind wirklich eine Art von Ergänzung zu einem Update und nicht eine Entfernung. In diesem Fall fügen Sie tatsächlich eine Genehmigungsart hinzu.

Da eine Synchronisierung während der eigentlichen Bereinigung nicht durchgeführt werden kann, wird empfohlen, alle Vorgänge über Nacht zu planen/abzuschließen. Überprüfen Sie dann den Abschluss über die Protokollierung am nächsten Morgen vor der nächsten geplanten Synchronisierung. Wenn ein Fehler auftritt, kann die Wartung für die nächste Nacht neu geplant werden, sobald das zugrunde liegende Problem identifiziert und behoben wurde.

Diese Aufgaben können je nach Umgebung schneller oder langsamer ausgeführt werden, und das Timing des Zeitplans sollte dies widerspiegeln. Hoffentlich sind sie schneller, da meine Laborumgebung tendenziell etwas langsamer ist als eine normale Produktionsumgebung. Ich bin ein bisschen aggressiv bezüglich des Timings der Rückgangsskripts. Wenn Tier2 Tier3 um ein paar Minuten überlappt, verursacht dies kein Problem, da die Ausführung meiner Synchronisierung nicht geplant ist.

Wenn die Synchronisierung nicht erfolgt, werden die Ablehnungen nicht versehentlich auf meine WSUS-Server des Tier3-Replikats von Tier2 übertragen. Ich habe mir zwischen dem Tier3-Rückgang und der Tier3-Bereinigung zusätzliche Zeit beglichen, da ich auf jeden Fall sicherstellen möchte, dass das Skript für den Rückgang abgeschlossen ist, bevor ich meine Bereinigung ausführte.

Es stellt sich eine häufige Frage: Warum sollte ich nicht alle Bereinigungen und Neuindizierungen gleichzeitig ausführen, da ich nicht synchronisiert werde?

Die Antwort ist, dass Sie wahrscheinlich könnte, aber ich würde nicht. Wenn mein Kollege auf der ganzen Welt eine Synchronisierung ausführen muss, würde ich mit diesem Zeitplan das Risiko verwaister Updates in WSUS minimieren. Und ich kann es planen, um den Abschluss der nächsten Nacht erneut auszuführen.

Zeit Tarif Aufgaben
24:00 Uhr Stufe 1-Ablehnen
00:15 Stufe 2-Ablehnen
00:30 Stufe 3-Ablehnen
1:00 Uhr Tier3 WSUS-Bereinigung
2:00 Uhr Ebene 3 Neu indizieren Tier2 WSUS-Bereinigung
3:00 Uhr Tier1-Cleanup Tier2 Neu indizieren
4:00 Uhr Tier1 Reindex

Notiz

Wenn Sie Configuration Manager aktuelle Verzweigungsversion 1906 oder höher verwenden, um die WSUS-Wartung durchzuführen, führt Configuration Manager die Bereinigung nach der Synchronisierung mithilfe des Top-Down-Ansatzes durch. In diesem Szenario können Sie die Sicherungs- und Neuindizierungsaufträge der WSUS-Datenbank so planen, dass sie vor dem konfigurierten Synchronisierungszeitplan ausgeführt werden, ohne sich gedanken über die anderen Schritte zu machen, da Configuration Manager alles andere verarbeitet.

Weitere Informationen zu zusammenhangslosen Namespaces finden Sie in den folgenden Artikeln: