Condividi tramite


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.

Screenshot delle opzioni di manutenzione WSUS in Componenti del punto di aggiornamento software Finestra Proprietà.

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.

  1. Prima di avviare il processo di manutenzione, leggere tutte le informazioni e le istruzioni in questo articolo.

  2. 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.

  3. 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.

  4. 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.

    Screenshot dell'impostazione Abilita sincronizzazione in base a una pianificazione.

  5. 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.

    Screenshot dei due SUP di esempio.

Eseguire la manutenzione di WSUS

I passaggi di base necessari per la corretta manutenzione di WSUS includono:

  1. Eseguire il backup del database WSUS
  2. Creare indici di campo personalizzato
  3. Reindicizzare il database WSUS
  4. Rifiutare gli aggiornamenti sostituiti ed eseguire la manutenzione
  5. 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.

Posizione dell'opzione Aggiungi indici non cluster al database WSUS nella configurazione SUP di Gestione configurazione.

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.

  1. Assicurarsi di disporre di un backup del database SUSDB.

  2. Usare SQL Management Studio per connettersi al database SUSDB nello stesso modo descritto nella sezione Reindex the WSUS database (Reindicizzare il database WSUS ).

  3. 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:

Screenshot di SqlServerName-SSEE.

Screenshot di SqlServerName-WID.

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.

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.

Screenshot dell'errore Non è possibile connettersi al server.

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.

Eseguire l'istruzione SQL.

Screenshot del log con esito positivo.

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.

Screenshot dell'opzione Rifiuta aggiornamenti scaduti in WSUS in base alle regole di sostituzione nella scheda Manutenzione WSUS.

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.

Screenshot delle opzioni Aggiornamenti sostituiti con scadenza immediata nella scheda Regole di sostituzione.

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 .

Screenshot dell'opzione Aggiorna origine e server proxy.

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:

Screenshot dei mesi di 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:

Finestra di Windows PowerShell in cui è in esecuzione lo script con –SkipDecline ed –ExclusionPeriod 60

Esecuzione dello script con -ExclusionPeriod 60, per rifiutare gli aggiornamenti sostituiti precedenti a 60 giorni:

Screenshot della finestra Windows PowerShell con ExclusionPeriod 60 in esecuzione.

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:

Screenshot dell'output Windows PowerShell e dell'indicatore di stato.

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.

Screenshot dell'opzione Rimuovi aggiornamenti obsoleti dal 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:

Screenshot della pagina del percorso della Pulizia guidata server WSUS.

Per maggiori informazioni, consultare Visualizzare il registro errori di SQL Server.

Screenshot della pagina iniziale della Pulizia guidata server WSUS.

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.

Fine della procedura guidata Pulizia server Windows Server Update Services.

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:

  1. 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.

  2. 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.

  1. 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.

    Screenshot delle regole di sostituzione.

  2. Se non è stato eseguito il backup del database SUSDB, eseguire questa operazione prima di procedere ulteriormente.

  3. Usare SQL Server Management Studio per connettersi a SUSDB.

  4. 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.'
    
  5. 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.

Screenshot della schermata Approva Aggiornamenti WSUS.

Se l'aggiornamento non è più in WSUS, può essere importato dal catalogo di Microsoft Update, se non è scaduto o non è stato rimosso dal catalogo.

Come importare aggiornamenti in WSUS.

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.

  1. 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.

  2. Se si dispone di server WSUS downstream, è necessario eseguire prima la manutenzione su di essi e quindi eseguire i server upstream.

  3. 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:

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.

  1. 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.

    Screenshot della schermata Crea un'attività di WSUS.

  2. 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'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 # 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.

    WSUS aggiunge una riga di script per avviare l'attività.

  3. 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 il trigger di modifica di WSUS per l'attività.

  4. Impostare anche altre condizioni o impostazioni da modificare. Quando si salva l'attività, è possibile che vengano richieste le credenziali dell'utente RunAs .

  5. È 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

  1. Salvare lo script di database WSUS Reindex come file con estensione sql, ad esempio SUSDBMaint.sql.

  2. Creare un'attività di base e assegnargli un nome:

    Schermata Creazione guidata attività di base di WSUS.

  3. 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:

    Impostare la frequenza di tale attività nella Creazione guidata attività di base.

  4. 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

    Aspetto dello script nella Creazione guidata attività di base.

  5. Verrà visualizzato un avviso simile a quello visualizzato durante la creazione dell'attività di pulizia. Selezionare per accettare gli argomenti e quindi selezionare Fine da applicare:

    Finestra popup di conferma del programma di pianificazione delle attività.

  6. È 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.

  1. 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.

    Digitare un nome per il piano di manutenzione WSUS.

  2. Selezionare sottopiano1 e quindi verificare che la casella degli strumenti sia nel contesto:

    Assicurarsi che la Casella degli strumenti sia in contesto.

  3. Trascinare l'attività di esecuzione dell'istruzione T-SQL.

    Screenshot dell'opzione Esegui attività istruzione T-SQL.

  4. 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.

    Screenshot per copiare e incollare lo script di reindicizzazione WSUS.

  5. 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.

    Schermata di pianificazione di un nuovo processo di WSUS.

  6. 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: