Event ID 12032 WSUS: сбой выполнения SQL-запроса в базе данных
Симптомы ошибки SQL-запросов (Event ID 12032)
В журнале Application регистрируется событие Event ID 12032: The WSUS administration console was unable to connect to the database. An error occurred while executing a database query. В деталях ошибки отображаются исключения SqlException, связанные с переполнением журнала транзакций или повреждением объектов.
| Симптом | Причина |
|---|---|
| Сбой формирования списков обновлений | Повреждение индексов в ключевых таблицах tbUpdate или tbRevision |
| Переполнение диска C: файлами tempdb | Неоптимизированные запросы WSUS исчерпывают свободное дисковое пространство |
| Отказ службы синхронизации WSUSService | Служба не может записать метаданные языковых пакетов |
Пошаговое устранение сбоев запросов (Event ID 12032)
- Проверьте свободное место на системном томе с базой данных: база данных WID или tempdb не может расшириться при отсутствии места на диске:
# Проверка свободного места на дисках сервера:
Get-PSDrive -PSProvider FileSystem | Select-Object Name, @{N="FreeGB";E={[math]::round($_.Free/1GB,2)}}, @{N="UsedGB";E={[math]::round($_.Used/1GB,2)}}- Проверьте целостность базы данных SUSDB: выполните проверку на логические и физические повреждения структуры SQL:
# Запуск проверки целостности базы SUSDB:
Invoke-Sqlcmd -ServerInstance "np:\\.\pipe\MICROSOFT##WID\tsql\query" -Query "DBCC CHECKDB ('SUSDB') WITH NO_INFOMSGS, ALL_ERRORMSGS;"- Сожмите разросшийся журнал транзакций (SUSDB_log.ldf):
# Переключение модели восстановления в Simple и сжатие журнала транзакций:
$shrinkSql = @"
USE [master];
ALTER DATABASE [SUSDB] SET RECOVERY SIMPLE;
USE [SUSDB];
DBCC SHRINKFILE ('SUSDB_log', 100);
"@
Invoke-Sqlcmd -ServerInstance "np:\\.\pipe\MICROSOFT##WID\tsql\query" -Query $shrinkSqlВнимание: Если DBCC CHECKDB возвращает ошибки распределения страниц (Allocation errors), восстановите базу из последнего бекапа, либо выполните аварийный ремонт базы.
Частые вопросы (FAQ)
Почему файл журнала транзакций SUSDB_log.ldf разрастается до 50–100 ГБ?
Если база находится в режиме Full Recovery, все операции синхронизации и очистки накапливаются в журнале транзакций. Перевод в режим Simple Recovery и сжатие решают проблему.
Как перенести базу SUSDB на другой диск при нехватке места?
Остановите службу WID, отсоедините базу через sp_detach_db, переместите .mdf и .ldf файлы на диск D: и выполните CREATE DATABASE ... FOR ATTACH.
Что делать, если база WID не отвечает на команды sqlcmd?
Проверьте, запущена ли служба MSSQL$MICROSOFT##WID и открыт ли именованный канал np:\\.\pipe\MICROSOFT##WID\tsql\query.
Безопасно ли уменьшать размер tempdb?
Да, файл tempdb пересоздается заново с минимальным размером при каждом перезапуске службы базы данных.