Dormestmass: Админ — это состояние души

WSUS и переполнение базы данных MSDE

В нашей организации успешно эксплуатируется сервер Microsoft Windows Server Update Services. Для его работы необходим MS SQL Server, в нашем случае используеться MSDE вариант.

Вот буквально сегодня вылезли грабли, связанные с тем, что у MSDE существует ограничение на максимальный размер БД — 2Gb. База разрослась и работа WSUS-a на этом остановилась.

Для уменьшения размера размера базы необходимо через wsusutil.exe удалить ненужные записи. В нормальной ситуации выглядит это так:

C:\Program Files\Update Services\Tools>wsusutil.exe deleteunneededrevisions
Database cleanup is in progress, please be patient
Database cleanup has completed successfully
C:\Program Files\Update Services\Tools>

Однако, в моем случае, wsusutil отказался работать, ругнувшись на отсутствие места в базе. Получился какой-то гиблый замкнутый круг.

И решил я сделать shrink нашей БД.

Поскольку консоли в MSDE нету, то пришлось пойти обходным путем. Для начала, нужно переключить режим аутентификации SQL-сервера. Для этого останавливаем службу MSSQL и связанные с ним службы. В моем случае это MSSQL$WSUS и SQLAgent$WSUS.

Дальше идем в реестре по адресу HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\<Instance Name>\MSSQLServer\ и ищем ключ LoginMode. По умолчанию включена аутентификация Windows (1). Необходимо включить MixedMode, установив ключ равным 2. После этой коррекции запускаем службы.

Без переключения режима аутентификации утилита osql отказалась у меня работать, выдав сообщение:

Login failed for user 'sa'. Reason: Not associated with a trusted SQL Server connection.

После этого выполнил процедуру сжатия:

C:\>osql -S wsus\WSUS -U sa
Password:
1> dbcc shrinkdatabase('susdb',0)
2> go
 DbId   FileId CurrentSize MinimumSize UsedPages   EstimatedPages
 ------ ------ ----------- ----------- ----------- --------------
      5      1      239224          96      239216         239216
      5      2          63          63          56             56
(2 rows affected)
DBCC execution completed. If DBCC printed error messages, contact your system
administrator.
1>

Размер базы уменьшился очень незначительно, однако этого хватило для того, чтобы wsusutil отработала нормально. По прошествию некоторого времени команда завершила свою работу.

После этого опять сжимаем базу:

1> dbcc shrinkdatabase('susdb',0)
2> go
 DbId   FileId CurrentSize MinimumSize UsedPages   EstimatedPages
 ------ ------ ----------- ----------- ----------- --------------
      5      1      211376          96      189600         189600
      5      2          63          63          56             56
(2 rows affected)
1>

Размер базы уменьшился до 1,6Gb. WSUS заработал, но появилась мысль, что, возможно, в скором времени MSDE придется заменить на полноценный MS SQL Server.

Популярность: 7%

Похожие заметки

Нет похожих заметок.

Вы можете следить за обсуждением с помощью RSS 2.0 ленты.