Sicherheitshinweis

Die hier bereitgestellten Skripte sind stets auf eigene Gefahr anzuwenden!
Daher immer erst mit einem nicht-kritischen System oder in einer Testumgebung ausführlich testen!


Einleitung

Die WSUS-Datenbank gibt den in der Vergangenheit in Anspruch genommenen Festplattenspeicher nicht automatisch frei, auch wenn Teile oder der gesamte Inhalt der WSUS-Datenbank entsprechend bearbeitet worden sind. Durch z.B. dem Entfernen einzelner Windows Update Dateien, aller Windows Updates eines Produktes oder einer bestimmten Klassifizierung.

Standardpfade für die WSUS-Datenbank:

%SystemRoot%\WID\Data
ODER
%ProgramFiles%\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA

Die WSUS Datenbankdateien werden durch die folgenden Prozesse genutzt:

Webserver-Dienst (w3svc)
Windows Update AutoUpdate Dienst (wuauserv)
Windows Internal Database (MSSQL$MICROSOFT##WID)

Diese 3 Prozesse sind zu stoppen, sollte zuvor eine Kopie der Daten erstellt werden müssen. Für die nächsten Schritte sind diese Prozesse im gestarteten Modus wieder zwingende Voraussetzungen.

Voraussetzungen

In diesem Beitrag erläutere ich, wie diese Tätigkeiten mittels der Kommandozeile entsprechend durchgeführt werden können. Jedoch sind hierzu gewisse Voraussetzungen zu treffen, damit auf die SUSDB aus der Kommandozeile erfolgreich zugegriffen werden kann. Daher sind die folgenden Installationen zwingende Voraussetzungen…

Möglichkeit 1:

  • Microsoft SQL Server Management Studio (SSMS) (Download)
    – Ersetzt Möglichkeit 2! –

Möglichkeit 2:

  • Microsoft Visual C++ 201x Redistributable (Download)
  • Microsoft ODBC Driver 17 for SQL Server (Download)
  • Microsoft Befehlenszeilenprogramm 15 für SQL Server (Download)
    – Ersetzt Möglichkeit 1! –

Vorbereitungen

Aus der Kommandozeilenebene heraus, wird eine *.sql- Datei aufgerufen und ausgeführt. Deswegen muss zuvor noch eine entsprechende *.sql- Datei erstellt werden. Die Bennenung der SQL-Datei ist grundsätzlich egal!

SQL-Skript:

USE SUSDB;
GO
DBCC SHRINKDATABASE(N'SUSDB');
GO

Für den späteren Aufruf in der Kommandozeile, die *.sql- Datei entsprechend lokal auf dem System abspeichern. Für die Automatisierung bietet sich auf der Kommandozeile ebenfalls eine entsprechende *.cmd- Datei an.

CMD-Skript-Beispiel:

REM ============================================================================
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET CMDNAME=%~NX0 (%~Z0 Bytes) 
TITLE %CMDNAME%
MODE CON:COLS=81 LINES=12
COLOR 1F
REM - Run SQL Script to prepare the database environment
REM [-S Server]
REM [-E vertrauenswürdige Verbindung]
REM [-i Eingabedatei]
REM [-o Ausgabedatei]
REM [-W nachfolgende Leerzeichen entfernen]

ECHO Preparing Databases...
Sqlcmd -S "np:\\.\pipe\MICROSOFT##WID\tsql\query" -E -i "C:\Scripts\WSUS\db_shrink.sql" -o "C:\Scripts\WSUS\_LOG\db_shrink.log" -W
ENDLOCAL
EXIT /B %ERRORLEVEL%
REM ============================================================================

(Ist die WSUS-DB umbenannt bzw. besitzt einen anderen DB-Namen, muss der entsprechende Aufruf abgeändert werden: \.\pipe\MICROSOFT##WID\tsql\query)

Für den späteren Aufruf in der Aufgabenplanung, die *.cmd- Datei entsprechend lokal auf dem System abspeichern. Zusätzlich muss das LOG-Verzeichnis zuvor erstellt sein. Die Speicherpfade an die eigenen Bedürfnisse anpassen!

-E -i "C:\Scripts\WSUS\db_shrink.sql" -o "C:\Scripts\WSUS\_LOG\db_shrink.log" -W


WSUS-Datenbankgröße verkleinern

Sind die Vorbereitungen abgearbeitet, ist die Durchführung der ausstehenden Aktionen schnell getan.

Variante 1:

  • Die *.cmd- Datei manuell mit administrativer Berechtigungen starten und ausführen.

Variante 2:

In der Aufgabenplanung eine neue Aufgabe erstellen und hierbei auf die folgenden Optionen achten…

  • Allgemein (Reiter) –> Sicherheitsoptionen –>
    Unnabhängig von der Benutzeranmeldung ausführen
  • Allgemein (Reiter) –> Sicherheitsoptionen –>
    Mit höchsten Privilegien ausführen
  • Allgemein (Reiter) –> Konfigurieren für:
    Windows Server 20xx
  • Aktionen (Reiter) –> Neu –> Aktion: –>
    Programm starten
  • Aktionen (Reiter) –> Neu –> Einstellungen –> Programm/Skript –>
    C:\Scripts\WSUS\db_shrink.cmd

Prüfung der WSUS-Datenbankgröße

Die Kontrolle, ob sich die Datenbankgröße verkleinert hat, ist aus der erstellten LOG-Datei zu entnehmen.

Beispiel:

C:\Scripts\WSUS\_LOG\db_shrink.log

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Time limit is exhausted. Please reload CAPTCHA.