Skip to content

Instantly share code, notes, and snippets.

@9000cats
Last active April 29, 2025 18:19
Show Gist options
  • Save 9000cats/326d3de19607e6d7b8e625646b7ee07c to your computer and use it in GitHub Desktop.
Save 9000cats/326d3de19607e6d7b8e625646b7ee07c to your computer and use it in GitHub Desktop.
# WSUS Driver Cleanup
## aka you synced the drivers to WSUS and now the database is fucked
1. If you can: decline all driver updates and run WSUS cleanup job, via the WSUS management console.
2. Connect to the Windows Internal Database named pipe via SQL Server Management Studio
a. Right-click and run SSMS as Administrator
b. Use this named pipe to connect: np:\\.\pipe\MICROSOFT##WID\tsql\query
3. Run all of these delete queries against the database, one-by-one to check for errors before running the next:
a. delete from tbrevisionlanguage where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'));
delete from tbProperty where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'));
delete from tbLocalizedPropertyForRevision where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'));
delete from tbFileForRevision where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'));
delete from tbInstalledUpdateSufficientForPrerequisite where prerequisiteid in (select Prerequisiteid from tbPreRequisite where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629')));
delete from tbPreRequisite where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'));
delete from tbDeployment where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'));
delete from tbXml where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'));
delete from tbPreComputedLocalizedProperty where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'));
DELETE FROM tbTargetComputerHardwareIdWHERE revisionid IN (SELECT revisionid FROM tbRevision WHERE LocalUpdateId IN (SELECT LocalUpdateId FROM tbUpdate WHERE UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'));
DELETE FROM tbDriverFeatureScore WHERE revisionid IN (SELECT revisionid FROM tbRevision WHERE LocalUpdateId IN (SELECT LocalUpdateId FROM tbUpdate WHERE UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'));
DELETE FROM tbDistributionComputerHardwareId WHERE revisionid IN (SELECT revisionid FROM tbRevision WHERE LocalUpdateId IN (SELECT LocalUpdateId FROM tbUpdate WHERE UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'));
delete from tbDriver where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'));
delete from tbFlattenedRevisionInCategory where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'));
delete from tbRevisionInCategory where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'));
delete from tbMoreInfoURLForRevision where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'));
DELETE FROM tbCompatiblePrinterProvider WHERE RevisionID IN (SELECT revisionid FROM tbRevision WHERE LocalUpdateId IN (SELECT LocalUpdateId FROM tbUpdate WHERE UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629'));
delete from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629');
delete from tbUpdateSummaryForAllComputers where LocalUpdateId in (select LocalUpdateId from tbUpdate where UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629');
delete from tbUpdate where UpdateTypeID = 'D2CB599A-FA9F-4AE9-B346-94AD54EE0629';
4. Shrink the transaction log file, as it's likely massive now (mine was 20GB free when this was done)
a. Check the logfile size
i. SELECT
name AS FileName,
size/128.0 AS CurrentSizeMB,
CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0 AS SpaceUsedMB,
size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0 AS FreeSpaceMB
FROM sys.database_files
WHERE type = 1;
b. Shrink transaction log if needed
i. DBCC SHRINKFILE (N'SUSDB_log', 1024); -- 1024 = 1GB
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment