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.
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.
Bevor Sie mit dem Wartungsvorgang beginnen, lesen Sie alle Informationen und Anweisungen in diesem Artikel.
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.
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.
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.
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.
Durchführen der WSUS-Wartung
Zu den grundlegenden Schritten, die für die ordnungsgemäße WSUS-Wartung erforderlich sind, gehören:
- Sichern der WSUS-Datenbank
- Erstellen von Indizes für benutzerdefinierte Felder
- Neuindizieren der WSUS-Datenbank
- Ablehnen überholter Updates und Ausführen der Wartungsarbeiten
- 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.
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.
Stellen Sie sicher, dass Sie über eine Sicherung der SUSDB-Datenbank verfügen.
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.
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:
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.
- Wechseln Sie mit Editor zum
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\query
ein.
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.
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.
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.
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.
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 .
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:
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:
Ausführen des Skripts mit -ExclusionPeriod 60, um abgelöste Updates, die älter als 60 Tage sind, abzulehnen:
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:
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.
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:
Weitere Informationen finden Sie unter Anzeigen des SQL Server-Fehlerprotokolls.
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.
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:
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.
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 spDeleteUpdate
zu 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.
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.
Wenn Sie die SUSDB-Datenbank nicht gesichert haben, tun Sie dies, bevor Sie fortfahren.
Verwenden Sie SQL Server Management Studio, um eine Verbindung mit SUSDB herzustellen.
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.'
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.
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.
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.
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.
Wenn Sie über nachgeschaltete WSUS-Server verfügen, müssen Sie zuerst wartungsarbeiten und dann die Upstreamserver ausführen.
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:
- Neuindizierung der WSUS-Datenbank
- Agent-XPs-Serverkonfigurationsoption
- Wochenendskripter: Verwenden des Windows-Aufgabenplaners zum Ausführen eines Windows PowerShell-Skripts
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.
Ö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.
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ächlichenSERVERNAME
.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.
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 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.
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
Speichern Sie das WSUS-Datenbankskript erneut als SQL-Datei (z. B. SUSDBMaint.sql).
Erstellen Sie eine grundlegende Aufgabe, und geben Sie ihr einen Namen:
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:
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
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:
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.
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.
Wählen Sie "Unterplan1 " aus, und stellen Sie sicher, dass sich die Toolbox im Kontext befindet:
Fügen Sie die Aufgabe „Task 'T-SQL-Anweisung ausführen'“ per Drag & Drop ein.
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“.
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.
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: