La guida completa alla manutenzione di Microsoft WSUS e alla Gestione di configurazione SUP
Questo articolo risolve alcune domande comuni sulla manutenzione di WSUS per gli ambienti Configuration Manager.
Versione originale del prodotto: Server Windows, Windows Server Update Services, Configuration Manager
Numero KB originale: 4490644
Introduzione
Le domande sono spesso in linea con come eseguire correttamente questa manutenzione in un ambiente Configuration Manager o Con quale frequenza è consigliabile eseguire questa manutenzione. Non è raro che gli amministratori Configuration Manager coscienziosi non siano consapevoli che la manutenzione wsus deve essere eseguita. La maggior parte di noi ha appena configurato server WSUS perché è un prerequisito per un punto di aggiornamento software (SUP). Dopo aver configurato il SUP, si chiude la console WSUS e si fa finta che non esista. Sfortunatamente, può essere problematico per i client Configuration Manager e le prestazioni complessive del server WSUS/SUP.
Con la consapevolezza che questa manutenzione deve essere eseguita, ci si sta chiedendo quale manutenzione è necessario fare e con quale frequenza è necessario farlo. La risposta è che è necessario eseguire la manutenzione mensile. La manutenzione è semplice e non richiede molto tempo per i server WSUS che sono stati ben mantenuti fin dall'inizio. Tuttavia, se la manutenzione WSUS è stata eseguita da un certo tempo, la pulizia potrebbe essere più difficile o richiedere molto tempo per la prima volta. Sarà molto più facile o più veloce nei mesi successivi.
Per altre informazioni sui passaggi concisi e sugli script automatici, vedere Manutenzione manuale e automatica del database WSUS.
Gestire WSUS durante il supporto di Configuration Manager current branch versione 1906 e versioni successive
Se si usa Configuration Manager current branch versione 1906 o versioni successive, è consigliabile abilitare le opzioni di manutenzione WSUS nella configurazione del punto di aggiornamento software nel sito di primo livello per automatizzare le procedure di pulizia dopo ogni sincronizzazione. Gestisce in modo efficace tutte le operazioni di pulizia descritte in questo articolo, ad eccezione del backup e della reindicizzazione del database WSUS. È comunque consigliabile automatizzare il backup del database WSUS insieme alla reindicizzazione del database WSUS in base a una pianificazione.
Per altre informazioni sulla manutenzione degli aggiornamenti software in Configuration Manager, vedere Manutenzione degli aggiornamenti software.
Considerazioni importanti
Note
Se si usano le funzionalità di manutenzione aggiunte in Configuration Manager versione 1906, non è necessario considerare questi elementi perché Configuration Manager gestisce la pulizia dopo ogni sincronizzazione.
Prima di avviare il processo di manutenzione, leggere tutte le informazioni e le istruzioni in questo articolo.
Quando si usa WSUS insieme ai server downstream, i server WSUS vengono aggiunti dall'alto verso il basso, ma devono essere rimossi dal basso verso l'alto. Durante la sincronizzazione o l'aggiunta di aggiornamenti, passano prima al server WSUS upstream, quindi replicano verso il basso nei server downstream. Quando si esegue una pulizia e si rimuovono elementi dai server WSUS, è consigliabile iniziare dalla parte inferiore della gerarchia.
La manutenzione WSUS può essere eseguita contemporaneamente su più server dello stesso livello. Quando si esegue questa operazione, assicurarsi che venga eseguito un livello prima di passare a quello successivo. I passaggi di pulizia e reindicizzazione descritti di seguito devono essere eseguiti in tutti i server WSUS, indipendentemente dal fatto che si tratti o meno di un server WSUS di replica. Per altre informazioni su come determinare se un server WSUS è una replica, vedere Rifiutare gli aggiornamenti sostituiti.
Assicurarsi che i POP non vengano sincronizzati durante il processo di manutenzione, perché potrebbe causare la perdita di alcuni lavori già eseguiti. Controllare la pianificazione della sincronizzazione sup e impostarla temporaneamente su manuale durante questo processo.
Se sono presenti più SUP del sito primario o del sito di amministrazione centrale che non condividono SUSDB, considerare il server WSUS sincronizzato con il primo sup nel sito come se risiedesse in un livello sotto il sito. Ad esempio, il sito cas include due SUP:
- Quello denominato New si sincronizza con Microsoft Update, sarebbe il mio livello superiore (livello 1).
- Il server di nome "2012" viene sincronizzato con "New" e sarà considerato nel secondo livello. Può essere pulito allo stesso tempo farei tutti gli altri server di livello 2, ad esempio il singolo SUP del sito primario.
Eseguire la manutenzione di WSUS
I passaggi di base necessari per la corretta manutenzione di WSUS includono:
- Eseguire il backup del database WSUS
- Creare indici di campo personalizzato
- Reindicizzare il database WSUS
- Rifiutare gli aggiornamenti sostituiti ed eseguire la manutenzione
- Procedura guidata Pulizia server Windows Server Update Services.
Eseguire il backup del database WSUS
Eseguire il backup del database WSUS (SUSDB) usando il metodo desiderato. Per altre informazioni, vedere Creazione di un backup completo del database.
Creare indici di campo personalizzato
Questo processo è facoltativo ma consigliato, migliora notevolmente le prestazioni durante le operazioni di pulizia successive.
Se si usa Configuration Manager current branch versione 1906 o successiva, è consigliabile usare Configuration Manager per creare gli indici. Per creare gli indici, configurare l'opzione Aggiungi indici non cluster al database WSUS nella configurazione del punto di aggiornamento software per il sito più in alto.
Se si usa una versione precedente di Configuration Manager o server WSUS autonomi, seguire questa procedura per creare indici personalizzati nel database SUSDB. Per ogni SUSDB, si tratta di un processo una tantum.
Assicurarsi di disporre di un backup del database SUSDB.
Usare SQL Management Studio per connettersi al database SUSDB nello stesso modo descritto nella sezione Reindex the WSUS database (Reindicizzare il database WSUS ).
Eseguire lo script seguente su SUSDB per creare due indici personalizzati:
-- 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]
Se gli indici personalizzati sono stati creati in precedenza, l'esecuzione dello script genera di nuovo un errore simile a quello seguente:
Msg 1913, livello 16, stato 1, riga 1
L'operazione non è riuscita perché esiste già un indice o statistiche con nome 'nclLocalizedPropertyID' nella tabella 'dbo.tbLocalizedPropertyForRevision'.
Reindicizzare il database WSUS
Per reindicizzare il database WSUS (SUSDB), usare lo script T-SQL Reindex del database WSUS .
I passaggi per connettersi a SUSDB ed eseguire la reindicizzazione variano a seconda che SUSDB sia in esecuzione in SQL Server o Database interno di Windows (WID). Per determinare dove è in esecuzione SUSDB, controllare il SQLServerName
valore della voce del Registro di sistema nel server WSUS che si trova nella HKEY_LOCAL_MACHINE\Software\Microsoft\Update Services\Server\Setup
sottochiave.
Se il valore contiene solo il nome del server o l'istanza del server, SUSDB è in esecuzione in un SQL Server. Se il valore include la stringa ##SSEE
o ##WID
al suo interno, SUSDB è in esecuzione in WID, come illustrato di seguito:
Se SUSDB è stato installato in WID
Se SUSDB è stato installato in WID, SQL Server Management Studio Express deve essere installato in locale per eseguire lo script di reindicizzazione. Ecco un modo semplice per determinare quale versione di SQL Server Management Studio Express installare:
Windows Server 2012 e versioni successive
Passare a
C:\Windows\WID\Log
e trovare il log degli errori che contiene il numero di versione.Come determinare la versione, l'edizione e il livello di aggiornamento di SQL Server e relativi componenti Questo valore indica il livello di Service Pack (SP) in esecuzione da WID. Includere il livello SP durante la ricerca nell'Area download Microsoft per SQL Server Management Studio Express.
Per Windows Server 2008 R2 o versioni precedenti:
- Passare a
C:\Windows\SYSMSI\SSEE\MSSQL.2005\MSSQL\LOG
e aprire l'ultimo log degli errori con il Blocco note. Nella parte superiore sarà presente un numero di versione , ad esempio 9.00.4035.00 x64. Come determinare la versione, l'edizione e il livello di aggiornamento di SQL Server e relativi componenti Questo numero di versione indica il livello di Service Pack in esecuzione. Includere il livello SP durante la ricerca nell'Area download Microsoft per SQL Server Management Studio Express.
- Passare a
Dopo aver installato SQL Server Management Studio Express, avviarlo e immettere il nome del server a cui connettersi:
- Se il sistema operativo è Windows Server 2012 o versioni successive, usare
\\.\pipe\MICROSOFT##WID\tsql\query
. - Se il sistema operativo è precedente a Windows Server 2012, immettere
\\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query
.
Per WID, se si verificano errori simili ai seguenti quando si tenta di connettersi a SUSDB usando SQL Server Management Studio (SSMS), provare ad avviare SSMS usando l'opzione Esegui come amministratore.
Se SUSDB è stato installato in SQL Server
Se SUSDB è stato installato in SQL Server completo, avviare SQL Server Management Studio e immettere il nome del server e dell'istanza, se necessario, quando richiesto.
Suggerimento
In alternativa, è possibile usare un'utilità denominata sqlcmd
per eseguire lo script di reindicizzazione. Per ulteriori informazioni, vedere le note sulla versione.
Esecuzione dello script
Per eseguire lo script in SQL Server Management Studio o SQL Server Management Studio Express, selezionare Nuova query, incollare lo script nella finestra e quindi selezionare Esegui. Al termine, nella barra di stato verrà visualizzato un messaggio Query eseguito correttamente . Il riquadro Risultati conterrà i messaggi relativi agli indici ricompilati.
Rifiutare gli aggiornamenti sostituiti ed eseguire la manutenzione
Rifiutare gli aggiornamenti sostituiti nel server WSUS per consentire ai client di eseguire l'analisi in modo più efficiente. Prima di rifiutare gli aggiornamenti, assicurarsi che gli aggiornamenti sostituiti vengano distribuiti e che quelli sostituiti non siano più necessari. Configuration Manager include una pulizia separata, che consente di scadere gli aggiornamenti sostituiti in base ai criteri specificati. Per altre informazioni, vedere gli articoli seguenti:
La query SQL seguente può essere eseguita sul database SUSDB per determinare rapidamente il numero di aggiornamenti sostituiti. Se il numero di aggiornamenti sostituiti è superiore a 1500, può causare vari problemi correlati agli aggiornamenti software sia sul lato server che sul lato client.
-- Find the number of superseded updates
Select COUNT(UpdateID) from vwMinimalUpdate where IsSuperseded=1 and Declined=0
Se si usa Configuration Manager current branch versione 1906 o successiva, è consigliabile rifiutare automaticamente gli aggiornamenti sostituiti abilitando l'opzione Rifiuta aggiornamenti scaduti in WSUS in base alle regole di sostituzione nella configurazione del punto di aggiornamento software per il sito più in alto.
Quando si usa questa opzione, è possibile visualizzare il numero di aggiornamenti rifiutati esaminando il file WsyncMgr.log al termine del processo di sincronizzazione. Se si usa questa opzione, non è necessario usare lo script descritto più avanti in questa sezione (eseguendola manualmente o configurandola come attività per eseguirla in base a una pianificazione).
Se si usano server WSUS autonomi o una versione precedente di Configuration Manager, è possibile rifiutare manualmente gli aggiornamenti sostituiti usando la console WSUS. In alternativa, è possibile eseguire questo script di PowerShell. Copiare e salvare quindi lo script come file di script Decline-SupersededUpdatesWithExclusionPeriod.ps1 .
Note
Questo script viene fornito così come è. Deve essere testato completamente in un lab prima di usarlo nell'ambiente di produzione. Microsoft non garantisce in alcun modo l'uso di questo script. Eseguire sempre prima lo script con il -SkipDecline
parametro , per ottenere un riepilogo del numero di aggiornamenti sostituiti che verranno rifiutati.
Se Configuration Manager è impostato su Scadenza immediata degli aggiornamenti sostituiti (vedere di seguito), è possibile usare lo script di PowerShell per rifiutare tutti gli aggiornamenti sostituiti. Deve essere eseguita in tutti i server WSUS autonomi nella gerarchia Configuration Manager/WSUS.
Non è necessario eseguire lo script di PowerShell nei server WSUS impostati come repliche, ad esempio i SUP del sito secondario. Per determinare se un server WSUS è una replica, controllare le impostazioni dell'origine di aggiornamento .
Se gli aggiornamenti non sono configurati per essere immediatamente scaduti in Configuration Manager, lo script di PowerShell deve essere eseguito con un periodo di esclusione corrispondente all'impostazione Configuration Manager per il numero di giorni di scadenza degli aggiornamenti sostituiti. In questo caso, sono trascorsi 60 giorni dal momento che le proprietà del componente SUP sono configurate per attendere due mesi prima della scadenza degli aggiornamenti sostituiti:
Le righe di comando seguenti illustrano i vari modi in cui è possibile eseguire lo script di PowerShell:
Note
Quando si esegue lo script nel server WSUS, usare LOCALHOST
anziché l'effettivo 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
Esecuzione dello script con e -SkipDecline
-ExclusionPeriod 60
per raccogliere informazioni sugli aggiornamenti nel server WSUS e sul numero di aggiornamenti che potrebbero essere rifiutati:
Esecuzione dello script con -ExclusionPeriod 60, per rifiutare gli aggiornamenti sostituiti precedenti a 60 giorni:
Gli indicatori di output e di stato vengono visualizzati mentre lo script è in esecuzione. Si noti il fileSupersededUpdates.csv , che conterrà un elenco di tutti gli aggiornamenti rifiutati dallo script:
Note
Se si verificano problemi durante il tentativo di usare lo script di PowerShell precedente per rifiutare gli aggiornamenti sostituiti, vedere la sezione Esecuzione del timeout dello script Decline-SupersededUpdatesWithExclusionPeriod.ps1 durante la connessione al server WSUS oppure si verifica un errore 401 durante l'esecuzione per la procedura di risoluzione dei problemi.
Dopo che gli aggiornamenti sostituiti sono stati rifiutati, per ottenere prestazioni ottimali, SUSDB deve essere nuovamente indicizzato. Per informazioni correlate, vedere Reindicizzare il database WSUS.
Procedura guidata Pulizia server Windows Server Update Services.
La Pulizia guidata server WSUS offre opzioni per pulire gli elementi seguenti:
- Aggiornamenti inutilizzati e revisioni degli aggiornamenti (noti anche come aggiornamenti obsoleti)
- Computer che non contattano il server
- File di aggiornamento non necessari
- Aggiornamenti scaduti
- Aggiornamenti sostituiti
In un ambiente Configuration Manager le opzioni Computer che non contattano il server e File di aggiornamento non necessari non sono rilevanti perché Configuration Manager gestisce il contenuto e i dispositivi dell'aggiornamento software, a meno che non siano selezionate le opzioni Crea tutti gli eventi di report WSUS o Crea solo eventi di segnalazione dello stato WSUS in Impostazioni di sincronizzazione aggiornamenti software. Se è configurata una di queste opzioni, è consigliabile automatizzare la pulizia del server WSUS per eseguire la pulizia di queste due opzioni.
Se si usa Configuration Manager current branch versione 1906 o successiva, l'abilitazione dell'opzione Rifiuta aggiornamenti scaduti in WSUS in base alle regole di sostituzione gestisce il rifiuto degli aggiornamenti scaduti e degli aggiornamenti sostituiti in base alle regole di sostituzione specificate in Configuration Manager. L'abilitazione dell'opzione Rimuovi aggiornamenti obsoleti dal database WSUS in Configuration Manager current branch versione 1906 gestisce la pulizia degli aggiornamenti inutilizzati e delle revisioni degli aggiornamenti (aggiornamenti obsoleti). È consigliabile abilitare queste opzioni nella configurazione del punto di aggiornamento software nel sito di primo livello per consentire a Configuration Manager di pulire il database WSUS.
Se non sono mai stati puliti gli aggiornamenti obsoleti dal database WSUS, questa attività potrebbe verificarsi. È possibile esaminare WsyncMgr.log per altre informazioni ed eseguire manualmente lo script SQL specificato nella GUIDA. WsUS è in esecuzione da anni senza alcuna manutenzione e la pulizia guidata mantiene il timeout una volta, il che consentirebbe ai tentativi successivi di Configuration Manager di eseguire correttamente. Per altre informazioni sulla pulizia e la manutenzione di WSUS in Configuration Manager, vedere la documentazione.
Per i server WSUS autonomi o se si usa una versione precedente di Configuration Manager, è consigliabile eseguire periodicamente la Pulizia guidata WSUS. Se la Pulizia guidata server WSUS non è mai stata eseguita e WSUS è in produzione da un po' di tempo, potrebbe verificarsi il timeout della pulizia. In tal caso, reindicizzare prima con i passaggi 2 e 3 , quindi eseguire la pulizia con l'opzione Aggiornamenti inutilizzati e revisioni degli aggiornamenti selezionata.
Se non è mai stata eseguita la pulizia guidata di WSUS, l'esecuzione della pulizia con aggiornamenti inutilizzati e revisioni degli aggiornamenti potrebbe richiedere alcuni passaggi. Se si verifica un timeout, eseguirlo di nuovo fino al completamento e quindi eseguire ognuna delle altre opzioni una alla volta. Infine, eseguire un passaggio completo con tutte le opzioni selezionate. Se i timeout continuano a verificarsi, vedere l'alternativa SQL Server in HELP. Il mio WSUS è in esecuzione da anni senza aver mai fatto manutenzione e la pulizia guidata mantiene il timeout. L'esecuzione del completamento della Pulizia guidata server o dell'alternativa SQL può richiedere più ore o giorni.
La Pulizia guidata server WSUS viene eseguita dalla console WSUS. Si trova in Opzioni, come illustrato di seguito:
Per maggiori informazioni, consultare Visualizzare il registro errori di SQL Server.
Dopo aver segnalato il numero di elementi rimossi, la pulizia termina. Se queste informazioni non vengono restituite nel server WSUS, è consigliabile presupporre il timeout della pulizia. In questo caso, sarà necessario riavviarlo o usare l'alternativa SQL.
Dopo che gli aggiornamenti sostituiti sono stati rifiutati, per ottenere prestazioni ottimali, SUSDB deve essere nuovamente indicizzato. Per informazioni correlate, vedere la sezione Reindicizzare il database WSUS .
Risoluzione dei problemi
Guida Il mio WSUS è in esecuzione da anni senza aver mai fatto manutenzione e la pulizia guidata mantiene il timeout
In questo caso sono disponibili due opzioni diverse:
Reinstallare WSUS con un database aggiornato. Esistono diverse avvertenze correlate a questo, tra cui la lunghezza della sincronizzazione iniziale e le analisi client complete su SUSDB, rispetto alle analisi differenziali.
Assicurarsi di disporre di un backup del database SUSDB, quindi eseguire una reindicizzazione. Al termine, eseguire lo script seguente in SQL Server Management Studio o SQL Server Management Studio Express. Al termine, seguire tutte le istruzioni precedenti per l'esecuzione della manutenzione. Questo ultimo passaggio è necessario perché la
spDeleteUpdate
stored procedure rimuove solo gli aggiornamenti inutilizzati e le revisioni degli aggiornamenti.
Note
Prima di eseguire lo script, seguire i passaggi descritti in La stored procedure spDeleteUpdate viene eseguita lentamente per migliorare le prestazioni dell'esecuzione di spDeleteUpdate
.
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
Timeout dello script Decline-SupersededUpdatesWithExclusionPeriod.ps1 durante la connessione al server WSUS oppure si verifica un errore 401 durante l'esecuzione
Se si verificano errori quando si tenta di usare lo script di PowerShell per rifiutare gli aggiornamenti sostituiti, è possibile eseguire uno script SQL alternativo su SUDB.
Se Configuration Manager viene usato insieme a WSUS, controllare Le proprietà del componente del punto di aggiornamento software regole> di sostituzione per verificare la scadenza degli aggiornamenti sostituiti rapidamente, ad esempio immediatamente o dopo X mesi. Prendere nota di questa impostazione.
Se non è stato eseguito il backup del database SUSDB, eseguire questa operazione prima di procedere ulteriormente.
Usare SQL Server Management Studio per connettersi a SUSDB.
Eseguire la query seguente. Il numero 90 nella riga che include
DECLARE @thresholdDays INT = 90
deve corrispondere alle regole di sostituzione del passaggio 1 di questa procedura e al numero corretto di giorni che si allinea al numero di mesi configurato in Regole di sostituzione. Se questo valore è impostato per la scadenza immediata, il valore nella query SQL per@thresholdDays
deve essere impostato su zero.-- 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.'
Per controllare lo stato di avanzamento, monitorare la scheda Messaggi nel riquadro Risultati .
E se scoprissi di aver bisogno di uno degli aggiornamenti che ho rifiutato?
Se si decide che è necessario uno di questi aggiornamenti rifiutati in Configuration Manager, è possibile recuperarlo in WSUS facendo clic con il pulsante destro del mouse sull'aggiornamento e selezionando Approva. Modificare l'approvazione in Non approvato e quindi risincronizzare il SUP per riportare l'aggiornamento.
Se l'aggiornamento non è più in WSUS, può essere importato dal catalogo di Microsoft Update, se non è scaduto o non è stato rimosso dal catalogo.
Automazione della manutenzione wsus
Note
Se si usa Configuration Manager versione 1906 o successiva, automatizzare le procedure di pulizia abilitando le opzioni di manutenzione WSUS nella configurazione del punto di aggiornamento software del sito di primo livello. Queste opzioni gestiscono tutte le operazioni di pulizia eseguite dalla Pulizia guidata server WSUS. Tuttavia, è comunque consigliabile eseguire automaticamente il backup e reindicizzare il database WSUS in base a una pianificazione.
Le attività di manutenzione WSUS possono essere automatizzate, presupponendo che vengano soddisfatti prima alcuni requisiti.
Se non è mai stata eseguita la pulizia di WSUS, è necessario eseguire manualmente le prime due operazioni di pulizia. La seconda pulizia manuale deve essere eseguita 30 giorni dopo la prima, perché sono necessari 30 giorni prima che alcuni aggiornamenti e revisioni vengano aggiornati. Esistono motivi specifici per cui non si vuole automatizzare fino a dopo la seconda pulizia. La prima pulizia verrà probabilmente eseguita più a lungo del normale. Quindi non puoi giudicare quanto tempo richiederà normalmente questa manutenzione. La seconda pulizia è un indicatore molto migliore di ciò che è normale per i computer. Questo è importante perché è necessario capire quanto tempo impiega ogni passaggio come linea di base (mi piace anche aggiungere circa 30 minuti di wiggle room) in modo da poter determinare la tempistica per la pianificazione.
Se si dispone di server WSUS downstream, è necessario eseguire prima la manutenzione su di essi e quindi eseguire i server upstream.
Per pianificare la reindicizzazione di SUSDB, è necessaria una versione completa di SQL Server. Database interno di Windows (WID) non ha la possibilità di pianificare un'attività di manutenzione tramite SQL Server Management Studio Express. Detto questo, nei casi in cui viene usato WID è possibile usare l'Utilità di pianificazione con
SQLCMD
indicato in precedenza. Se si esegue questa route, è importante non sincronizzare i server/SUP WSUS durante questo periodo di manutenzione. In tal caso, è possibile che i server downstream finiscano per risincronizzare tutti gli aggiornamenti appena tentati di eseguire la pulizia. Questa operazione viene pianificata durante la notte prima della sincronizzazione AM, quindi ho il tempo di controllarla prima dell'esecuzione della sincronizzazione.
Collegamenti necessari/utili:
- Reindicizzare il database WSUS
- Opzione di configurazione del server XPs agent
- Scripter fine settimana: usare l'Utilità di pianificazione di Windows per eseguire uno script di Windows PowerShell
Script di pulizia WSUS
Note
Quando si esegue lo script nel server WSUS, usare LOCALHOST
anziché l'effettivo SERVERNAME
. Sostituire anche PORT
con quello usato.
[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);
Configurazione dell'attività pulizia WSUS in Utilità di pianificazione
Note
Come accennato in precedenza, se si usa Configuration Manager current branch versione 1906 o successiva, automatizzare le procedure di pulizia abilitando le opzioni di manutenzione WSUS nella configurazione del punto di aggiornamento software del sito di primo livello. Per i server WSUS autonomi o le versioni precedenti di Configuration Manager, è possibile continuare a seguire questa procedura.
Il post di blog Weekend Scripter menzionato nella sezione precedente contiene indicazioni di base e la risoluzione dei problemi per questo passaggio. Tuttavia, ti illustrerò il processo nei passaggi seguenti.
Aprire Utilità di pianificazione e selezionare Crea un'attività. Nella scheda Generale impostare il nome dell'attività, l'utente che si vuole eseguire lo script di PowerShell come (la maggior parte degli utenti usa un account di servizio). Selezionare Esegui se un utente è connesso o meno e quindi aggiungere una descrizione, se lo si desidera.
Nella scheda Azioni aggiungere una nuova azione e specificare il programma/script da eseguire. In questo caso, è necessario usare PowerShell e puntare al file PS1 che si vuole eseguire. È possibile usare lo script di pulizia WSUS. Questo script esegue le opzioni di pulizia che non vengono eseguite Configuration Manager current branch versione 1906. È possibile rimuovere il commento se si usa WSUS autonomo o una versione precedente di Configuration Manager. Se si desidera un log, è possibile modificare l'ultima riga dello script come indicato di seguito:
Note
Quando si esegue lo script nel server WSUS, usare
LOCALHOST
anziché l'effettivoSERVERNAME
. Sostituire anchePORT
con quello usato.[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;
Quando si salva, si otterrà un avviso o un avviso FYI nell'Utilità di pianificazione. È possibile ignorare questo avviso senza problemi.
Nella scheda Trigger impostare la pianificazione per una volta al mese o in base a qualsiasi pianificazione desiderata. Anche in questo caso, è necessario assicurarsi di non sincronizzare WSUS durante l'intera fase di pulizia e reindicizzazione.
Impostare anche altre condizioni o impostazioni da modificare. Quando si salva l'attività, è possibile che vengano richieste le credenziali dell'utente RunAs .
È anche possibile usare questi passaggi per configurare lo script Decline-SupersededUpdatesWithExclusionPeriod.ps1 da eseguire ogni tre mesi. In genere questo script viene impostato per l'esecuzione prima degli altri passaggi di pulizia, ma solo dopo l'esecuzione manuale e la verifica del completamento. Correrò alle 12:00 della prima domenica ogni tre mesi.
Configurazione della reindicizzazione di SUSDB per WID tramite SQLCMD e Utilità di pianificazione
Salvare lo script di database WSUS Reindex come file con estensione sql, ad esempio SUSDBMaint.sql.
Creare un'attività di base e assegnargli un nome:
Pianificare l'avvio di questa attività circa 30 minuti dopo il completamento dell'esecuzione della pulizia. La pulizia viene eseguita alle 1:00 ogni prima domenica. L'esecuzione richiede circa 30 minuti e gli darò altri 30 minuti prima di iniziare la reindicizzazione. Significa che questa attività verrà pianificata ogni prima domenica alle 2:00, come illustrato di seguito:
Selezionare l'azione Per avviare un programma. Nella casella Programma/script digitare il comando seguente. Il file specificato dopo il
-i
parametro è il percorso dello script SQL salvato nel passaggio 1. Il file specificato dopo il parametro è la-o
posizione in cui si vuole inserire il log. Ecco un esempio:"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
Verrà visualizzato un avviso simile a quello visualizzato durante la creazione dell'attività di pulizia. Selezionare Sì per accettare gli argomenti e quindi selezionare Fine da applicare:
È possibile testare lo script forzandolo per l'esecuzione e verificando la ricerca di errori nel log. Se si verificano problemi, il log indicherà il motivo. In genere, in caso di errore, l'account che esegue l'attività non dispone delle autorizzazioni appropriate o il servizio WID non viene avviato.
Configurazione di un'attività di manutenzione pianificata di base in SQL per SUSD non WID
Note
È necessario essere un amministratore di sistema in SQL Server per creare o gestire piani di manutenzione.
Aprire SQL Server Management Studio e connettersi all'istanza di WSUS. Espandere Gestione, fare clic con il pulsante destro del mouse su Piani di manutenzione e quindi scegliere Nuovo piano di manutenzione. Assegnare un nome al piano.
Selezionare sottopiano1 e quindi verificare che la casella degli strumenti sia nel contesto:
Trascinare l'attività di esecuzione dell'istruzione T-SQL.
Fare clic con il pulsante destro del mouse su Windows.edb, quindi selezionare Proprietà. Copiare e incollare lo script di reindicizzazione di WSUS e fare clic su OK.
Pianificare l'esecuzione di questa attività circa 30 minuti dopo il completamento dell'esecuzione della pulizia. La pulizia viene eseguita alle 1:00 ogni prima domenica. L'esecuzione richiede circa 30 minuti e gli darò altri 30 minuti prima di iniziare la reindicizzazione. Significa che si pianifica l'esecuzione di questa attività ogni prima domenica alle 2:00.
Durante la creazione del piano di manutenzione, è consigliabile aggiungere anche un backup di SUSDB al piano. Io di solito backup prima, poi reindicizzare. Potrebbe aggiungere più tempo alla pianificazione.
Combinazione delle funzionalità
Quando viene eseguita in una gerarchia, l'esecuzione della pulizia wsus deve essere eseguita dalla parte inferiore della gerarchia verso l'alto. Tuttavia, quando si usa lo script per rifiutare gli aggiornamenti sostituiti, l'esecuzione deve essere eseguita dall'alto verso il basso. Rifiutare gli aggiornamenti sostituiti è in realtà un tipo di aggiunta a un aggiornamento anziché una rimozione. In questo caso si sta effettivamente aggiungendo un tipo di approvazione .
Poiché non è possibile eseguire una sincronizzazione durante la pulizia effettiva, è consigliabile pianificare/completare tutte le attività durante la notte. Verificare quindi il completamento tramite la registrazione la mattina seguente, prima della successiva sincronizzazione pianificata. Se si verifica un errore, la manutenzione può essere ripianificata per la notte successiva, una volta identificato e risolto il problema sottostante.
Queste attività possono essere eseguite più velocemente o più lentamente a seconda dell'ambiente e la tempistica della pianificazione dovrebbe riflettere questo. Si spera che siano più veloci poiché l'ambiente di laboratorio tende ad essere un po' più lento rispetto a un normale ambiente di produzione. Sono un po 'aggressivo sulla tempistica degli script di declino. Se il livello 2 si sovrappone a Tier3 di alcuni minuti, non causerà un problema perché la sincronizzazione non è pianificata per l'esecuzione.
La mancata sincronizzazione impedisce il flusso accidentale dei rifiuti nei server WSUS di replica di livello 3 dal livello 2. Mi sono dato più tempo tra il rifiuto di livello 3 e la pulizia di livello 3 perché voglio assolutamente assicurarmi che lo script di rifiuto finisca prima di eseguire la pulizia.
Viene visualizzata una domanda comune: poiché non si esegue la sincronizzazione, perché non è consigliabile eseguire tutte le operazioni di pulizia e reindicizzazione contemporaneamente?
La risposta è che probabilmente potresti, ma non lo farei. Se il collega in tutto il mondo deve eseguire una sincronizzazione, con questa pianificazione ridurrei al minimo il rischio di aggiornamenti orfani in WSUS. E posso programmarlo per essere rieseguito per completare la notte successiva.
Time | Livello | Attività |
---|---|---|
12:00 | Tier1-Decline | |
0:15 | Tier2-Decline | |
0:30 | Tier3-Decline | |
1:00 | Pulizia WSUS di livello 3 | |
2:00 | Reindicizzazione livello 3 | Pulizia WSUS di livello 2 |
3.00 | Tier1-Cleanup | Reindicizzazione livello 2 |
4:00 | Reindicizzazione livello 1 |
Note
Se si usa Configuration Manager current branch versione 1906 o successiva per eseguire la manutenzione WSUS, Configuration Manager esegue la pulizia dopo la sincronizzazione usando l'approccio top-down. In questo scenario è possibile pianificare l'esecuzione dei processi di backup e reindicizzazione del database WSUS prima della pianificazione della sincronizzazione configurata senza preoccuparsi di nessuno degli altri passaggi, perché Configuration Manager gestirà tutto il resto.
Per ulteriori informazioni su questo messaggio di errore, consultare i seguenti articoli: