Wsus Manual Cleanup of Unused Updates

Spesso la procedura automatica di Cleanup del Wsus si “incastra” nella fase di individuazione ed eliminazione degli aggiornamenti non più utilizzati od utilizzabili, generando il blocco della console e/o di fatto, l’interruzione della procedura di pulizia.
L’errore risiede nel fatto che il WID (Windows Internal Database) utilizzato dal Wsus impiega moltissimo tempo (fino a 6 minuti) per ogni riga di SQL che contiene l’aggiornamento da eliminare. Se rientriamo in un caso di diverse migliaia di aggiornamenti e moltiplichiamo il tempo di esecuzione della pulizia abbiamo l’idea di quanti secoli l’operazione impiegherà.

Possiamo bypassare il problema agendo direttamente sulle tabelle del database del Wsus; prima di tutto connettiamoci:
Apriamo SQL Management Studio e digitiamo

\\.\pipe\MICROSOFT##WID\tsql\query

come stringa di connessione (valida da Windows Server 2012 R2 in poi).

Per visualizzare gli aggiornamenti che il Wsus conosce già come “Da Rimuovere”, digitiamo:

EXEC spGetObsoleteUpdatesToCleanup

Questo ci restituirà una colonna di ID aggiornamenti da eliminare e, in basso a destra, noteremo quante righe dovremo processare:

Per cancellare queste righe, dovremmo digitare una query di questo tipo:

exec spDeleteUpdate @localUpdateID=xxxxxx

dove “xxxxxx” corrisponde all’ID dell’aggiornamento.
Tale azione però ci costringe ad eseguire manualmente l’azione per ogni riga (16.952 volte per il nostro caso!).

A questa fonte ho recuperato un piccolo script che automatizza l’azione:

USE SUSDB
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

Ecco il nostro WID che viene processato:

Al termine, rieseguendo il Wsus cleanup wizard con la classica procedura di GUID, tutto funzionerà in maniera fluida e veloce.

Add a Comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.