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.