Windows internal database удалить

Обновлено: 04.07.2024

Итак цель написания данного опуса - это установка, настройка и обновление сервера обновлений, а также возможность переноса баз и файлов обновлений с помощью переносного жесткого диска или при помощи ноутбука, с установленной W2003 + WSUS.
Есть еще WSUS FAQ. Стоит почитать - очень рекомендую.

Содержание

Установка WSUS 3.1

Серер может устанавливаться только на сервера W2003 или выше.

Синхронизация с сервера Microsoft

Если у Вас это первый сервер WSUS, то сначала надо загрузить для него файлы с сервера Microsoft.
Для этого:
Идем в Параметры и запускаем Мастер настройки сервера Wsus и с помощью его настраиваем наш сервер для получения обновлений с сервера Microsoft.
Я остановлюсь только на ключевых моментах данной настройки.

  1. Во вкладке Выбор вышестоящего сервера выбираем Синхронизировать с Microsoft Update.
  2. Если не используется прокси сервер, то следующую вкладку можно пропустить.
  3. В следующей вкладке пробуем подключиться к серверу.
  4. После подключения, в следующей вкладке, выбираем языки обновлений. Обычно Английский и Русский. Я для себя выбрал только Русский, и объем выкачанный апдейтов составил около 20Гб.
  5. Далее выбираем Программные продукты, которые поддерживаются Microsoft и на которые можно получать обновления.

Вобщем настраиваем все по порядку - вроде ничего сложного нет и все понятно.
После настройки в назначенное Вами время произойдет синхронизация с сервером Microsoft и будут выкачаны все обновления для тех продуктов и языков, которые Вы указали.

Синхронизация с сервера WSUS

Можно новый сервер синхронизировать с другого сервера WSUS.
Для этого:

  1. Во вкладке Выбор вышестоящего сервера выбираем Синхронизировать с другим сервером Windows Server Update Services и указываем имя и порт сервера, с которого мы будем брать обновления и жмем далее.
  2. Пропускаем вкладку по настройке прокси сервера.
  3. В следующей вкладке жмем Начать подключение и когда станет активной кнопка Далее, жмем ее.
  4. Жмем Далее до Настройка рассписания синхронизации и выбираем Синхронизировать вручную (Вообще тут Вы можете установить, что хотите. Синхронизация с помощью данного режима хоть и самая простая, но занимает намного больше времени).

Вот и все с этим режимом.

Перенос баз WSUS копированием файлов

Можно перенести файлы базы данных и апдейтов, простым копированием с рабочего сервера WSUS.

Копирования файлов с сервера

Копирование файлов на новый сервер

Переназначение пути к файлам обновлений

Если имена папок или дисков WSUS на рабочем сервере и на новом совпадают, тогда ничего больше делать не нужно, если нет, то изменяем место хранения файлов обновлений WSUS:

Где g:\WSUS путь до WSUS на новом сервере.
После этого надо зайти в программу, удалить все старые группы и сами компьютеры и создать новые.
Это самый простой и быстрый способ переноса сервера WSUS.

Перенос базы данных с помощью утилиты wsusutil.exe

Перенос состоит из двух частей:

Перенос базы данных

1. Поднять новый сервер wsus 2. Экспортировать БД на "старом": 3. Перенести на "новый" директорию с обновлениями 4. Импортировать БД на "новом"

Перенос файлов обновлений

1. Скопировать файлы из директории WSUS\WsusContent старого сервера в одноименную директорию нового 2. Если имена дисков и папок на старом и новом сервере совпадают, то делать больше ничего не нужно. 3. Если нет, то изменяем место хранения файлов обновлений WSUS (может и не нужно, но хуже не будет.): Где g:\WSUS путь до WSUS на новом сервере. 4. Изменить GPO или скрипт для клиентов в целях перенаправления их на новый сервер

Одобрение обновлений

После переноса базы и файлов нужно настроить WSUS.
Для этого надо создать группы компьютеров для обновлений и одобрить все обновления (после переноса базы через wsusutil.exe, все обновления на новом сервере не одобрены)

Недостатки метода

У меня после переноса базы таким способом, некоторые обновления почему то отметились, как не выкачанные, а так качать было уже неоткуда, то они устанавливаться не будут.

Запуск обновлений на клиентах, которые не подключены к домену

С помощью групповых политик

C помощью reg файла

Создаем reg файл, например swus.reg

Надо только поменять параметры WUServer и WUStatusServer и запустить его на клиенте в сети.

Как удалить WSUS, если он не запускается, и процедура uninstall не работает

Предыстория

Устанавливал я WSUS 3.0 SP1 и, после переноса вручную баз,случилась беда - он перестал запускаться. И самое смешное, что процедура стандартного удаления, не работала - вылетала с ошибкой. Я очень долго мучался при удалении WSUS вручную. Улалил все файлы, почистил клинером реестр. Потом вручную из реестра удалял все ссылки на WSUS и Uptate Services. Но все равно при попытке установить WSUS заново, выскакивали ошибки и у меня ничего не получалось.

Тут я наткнулся на замечательную инструкцию в форуме по удалению WSUS. Естественно проверил на опытной машине - все замечательно отработало. Привожу это описание ниже с моим кривым переводом

Ручное удаление WSUS

1. Выкачайте и установите Windows Installer Clean Up, что бы получить MSIZAP.
Вообще данное средство может быть использовано для удаления остатков программ. Более подробно можно прочитать тут.
2. Из командной строки наберите:

3. Из командной строки наберите:

4. Снова, Из командной строки наберите:

5. Из командной строки наберите:

Ключ "T", при запуске MSIZAP, удаляет всб информацию для данного кода продукта, те для For WSUS 3.0:

Для Microsoft SQL Server 2005 Embedded Edition

Если папка \MSSQL\Data заблокирована, Вы можете удалить "Windows Internal Database" из Установка и удаление программ Панели управления.

Кто-нибудь знает способ полностью стереть WSUS обновлений и начать заново?

Кажется, что в списке есть куча языковых пакетов и всякого мусора, который нам не нужен. После удаления всех нежелательных продуктов, классификаций и языков я хотел бы полностью очистить базу данных WSUS и начать заново. Кажется, что удаление переустановки роли WSUS не помогает, они все еще там. Также попробовал мастер очистки сервера, который, по-видимому, в основном пустая трата времени, он не очистил ни одно из обновлений, которые, как я надеялся, удалят.

Я еще не установил ни одного из них на компьютеры, так что если бы я только мог понять, как я могу полностью стереть все перечисленные обновления и начать снова, но в соответствии с моим новым сокращенным списком продуктов.

У меня такое ощущение, что WSUS 2012 просто игнорирует мои настройки продукта, классификации и языка и перечисляет все загружаемые файлы, игнорируя мои настройки.

Чтобы переустановить WSUS с чистой базой данных, т.е. без предыдущей конфигурации:

Запустите Windows Powershell от имени администратора и используйте следующие команды:

Uninstall-WindowsFeature -Name UpdateServices,Windows-Internal-Database -Restart

Перезапустите пост, удалите ВСЕ в C:\Windows\WID\ папке (для Win 2012 r2).

Затем выполните следующую команду, чтобы переустановить WSUS:

Это работает только на PowerShell 3 или выше.
Дополнительная информация здесь: Microsoft TechNet. Удаление ролей и функций сервера

Удаление работало хорошо. Установка Power Shell не добавила базу данных обратно для меня (не версия SQL Server). В итоге я использовал команду power shell для удаления, затем мастер добавления менеджера сервера для повторной установки. Не упустите -Restart флаг и убедитесь, что вы действительно готовы перезагрузить весь физический или виртуальный сервер.

Ответ теперь найден, просто разместите его в интересах любого, кто может столкнуться с этой проблемой.

Кажется, что удаление WSUS и WID Database опция на самом деле не удаляет базу данных WID.

База данных WID может быть удалена путем удаления этой Windows Internal Database функции.

Место на нашем WSUS сервере ежедневно таяло на глазах. Решили зачистить старые обновления для Windows 7, 2008 и прочих уже почти отсутствующих у нас операционок.


Если галки выставлять поочередно, то что-то очищается.


Но когда ставим галку «Неиспользуемые обновления и редакции обновлений», вылетает: «Ошибка базы данных».

Попробовали сделать PowerShell скриптом (можно поочередно вбивать команды, можно вставить в cmd файл и запустить его):

PS1:

$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();

$cleanupScope = new-object Microsoft.UpdateServices.Administration.CleanupScope;

$cleanupScope.DeclineSupersededUpdates = $true

$cleanupScope.DeclineExpiredUpdates = $true

$cleanupScope.CleanupObsoleteUpdates = $true

$cleanupScope.CleanupObsoleteComputers = $true

$cleanupScope.CleanupUnneededContentFiles = $true

$cleanupManager = $wsus.GetCleanupManager();

$cleanupManager.PerformCleanup($cleanupScope);

DeclineSupersededUpdates — Отклонить замененные обновления.
DeclineExpiredUpdates — Отклонить просроченные обновления.
CleanupObsoleteUpdates — Удалить из базы неиспользуемые обновления.
CompressUpdates — Удалить из базы устаревшие ревизии обновлений.
CleanupObsoleteComputers — удалить компьютеры которые не соединялись за последние 30 дней.
CleanupUnneededContentFiles — Удаляет файлы отклоненных обновлений из папки WSUS.

или CMD:

@echo off

@echo Starting cleanup: %date% %time% >> d:\scripts\WSUS_Cleanup.log

powershell.exe d:\scripts\WSUS_Cleanup.ps1 >> d:\scripts\WSUS_Cleanup.log

@echo Finished cleanup: %date% %time% >> d:\scripts\WSUS_Cleanup.log

Но в итоге после некоторых раздумий сервер выдал:


Вот здесь как раз человек объясняет ситуацию:

В нашем случае видим, что база WID:


Далее, в случае, если база данных развёрнута на WID нам необходимо использовать утилиту sqlcmd и планировщик задач Windows. Если SQL Server — можно запланировать выполнение сценария с помощью планов обслуживания (Maintenance Plans).

Windows Internal Database

Чтобы установить sqlcmd можно скачать и установить SQL Server Management Studio (SSMS) для версии вашей WID. Версию можно определить в лог-файле:

  • В Windows Server 2012 — C:\Windows\WID\Log — открываем error.log, где в самом начале файла указана используемая версия SQL, для которой нам нужно скачать SSMS Express.
  • В Windows Server 2008 R2 и ниже — C:\Windows\SYSMSI\SSEE\MSSQL.2005\MSSQL\LOG — также открываем error.log и в самом начале файла смотрим версию.

Пытаюсь понять какая версия SQL у меня установлена:


Но ничего не понятно, и в файле ничего нет, хотя вроде должно быть.

В итоге устанавливаю консоль SQL Server Management Studio Express 2016 (она благополучно установилась):

Запускаем консоль Management Studio с правами администратора.

Подключаемся к базе, указав следующее имя сервера:


Запустил пару скриптов из этого поста, но мне это никак не помогло:

Еще раз запустил мастер очистки, оставил его на ночь и тут случилось чудо:


Самое печальное, что очистка прошла, а места больше на диске так и не стало.


Попробовал сделать через PowerShell:

$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();

$cleanupScope = new-object Microsoft.UpdateServices.Administration.CleanupScope;

$cleanupScope.DeclineSupersededUpdates = $true

$cleanupScope.DeclineExpiredUpdates = $true

$cleanupScope.CleanupObsoleteUpdates = $true

$cleanupScope.CleanupObsoleteComputers = $true

$cleanupScope.CleanupUnneededContentFiles = $true

$cleanupManager = $wsus.GetCleanupManager();

$cleanupManager.PerformCleanup($cleanupScope);


Вероятно необходима реиндексация базы.

Попробовал реиндексировать вот таким скриптом:

DECLARE @work_to_do TABLE (

DECLARE @objectid int;

DECLARE @indexid int;

DECLARE @schemaname nvarchar(130);

DECLARE @objectname nvarchar(130);

DECLARE @indexname nvarchar(130);

DECLARE @numrows int

DECLARE @density float;

DECLARE @fragmentation float;

DECLARE @command nvarchar(4000);

DECLARE @fillfactorset bit

DECLARE @numpages int

or (f.page_count > 50 and f.avg_fragmentation_in_percent > 15.0)

or (f.page_count > 10 and f.avg_fragmentation_in_percent > 80.0)

@work_to_do AS fi

INNER JOIN sys.indexes AS i ON fi.objectid = i.object_id and fi.indexid = i.index_id

INNER JOIN sys.dm_db_partition_stats AS ps on i.object_id = ps.object_id and i.index_id = ps.index_id

DECLARE curIndexes CURSOR FOR SELECT * FROM @work_to_do

FETCH NEXT FROM curIndexes

INTO @objectid, @indexid, @density, @fragmentation, @numrows;

IF @@FETCH_STATUS < 0 BREAK;

sys.objects AS o

INNER JOIN sys.schemas as s ON s.schema_id = o.schema_id

, @fillfactorset = CASE fill_factor WHEN 0 THEN 0 ELSE 1 END

object_id = @objectid AND index_id = @indexid;

IF ((@density BETWEEN 75.0 AND 85.0) AND @fillfactorset = 1) OR (@fragmentation < 30.0)

ELSE IF @numrows >= 5000 AND @fillfactorset = 0

IF EXISTS (SELECT * FROM @work_to_do)

@work_to_do AS fi

INNER JOIN sys.indexes AS i ON fi.objectid = i.object_id and fi.indexid = i.index_id

INNER JOIN sys.dm_db_partition_stats AS ps on i.object_id = ps.object_id and i.index_id = ps.index_id


Но снова место на диске так и не появилось.

Попробовал еще один скрипт:

DECLARE IndexCursor CURSOR FOR

SELECT sys.indexes.name AS IndexName

,sys.objects.name AS TableName

INNER JOIN sys.objects

ON sys.indexes.object_id = sys.objects.object_id

AND sys.indexes.is_disabled = 0

AND NOT sys.indexes.name IS NULL

ORDER BY TableName ASC

DECLARE @IndexName nvarchar(max), @TableName nvarchar(max);

DECLARE @ExecSql nvarchar(max);

FETCH NEXT FROM IndexCursor INTO @IndexName, @TableName;

WHILE @@FETCH_STATUS = 0

FETCH NEXT FROM IndexCursor INTO @IndexName, @TableName;

Но все это добавило лишь несколько мегабайт свободного места.

Скорее всего больше нечего реиндексировать.

ЭТО ВСЕ, ЧТО УДАЛОСЬ ПОЧЕРПНУТЬ ПО ДАННОМУ ВОПРОСУ.

P.S.

Попробуем резать по живому.

Останавливаем службу в IIS.


Удаляем все, что есть в папке WSUSContent, сразу видим, что диск опустел:


Запускаем службу

Нажимаем Синхронизировать сейчас, но ничего не происходит, так как в базе осталась информация что все обновления на месте, хотя по факту их уже нет.

Чтобы повторно установить WSUS с чистой базой данных, то есть предыдущей конфигурации:

Запустите Windows Powershell в качестве администратора и используйте следующие команды:

  • Uninstall-WindowsFeature -Name UpdateServices,Windows-Internal-Database -Restart
  • Повторите перезагрузку, удалите ВСЕ в C:\Windows\WID\(для Win 2012 r2).
  • Затем запустите следующую команду для повторной установки WSUS:

Install-WindowsFeature UpdateServices -Restart

Кажется, что удаление WSUS а также WID Database опция фактически не удаляет базу данных WID.

  • База данных WID можно удалить, удалив Windows Internal Database особенность.
  • Вам также потребуется вручную удалить файл C:\windows\WID\Data\susdb.mdf перед повторной установкой все снова.


выполните следующие действия, чтобы перенести базу данных WSUS (SUSDB) из экземпляра внутренняя база данных Windows в локальный или удаленный экземпляр SQL Server.

Предварительные требования

  • SQL Вхождение. Это может быть MSSQLServer или пользовательский экземпляр по умолчанию.
  • SQL Server Management Studio
  • WSUS с установленной ролью WID
  • IIS (обычно это включается при установке WSUS с помощью диспетчер сервера). Она еще не установлена, она должна быть.

Миграция базы данных WSUS

Останавливает службы IIS и WSUS на сервере WSUS

В PowerShell (с повышенными правами) выполните:

отсоединение SUSDB от внутренняя база данных Windows

использование SQL Management Studio

Использование командной строки

в этих шагах показано, как отсоединить базу данных WSUS (SUSDB) от экземпляра внутренняя база данных Windows с помощью программы sqlcmd . Дополнительные сведения о программе sqlcmd см. в разделе программа sqlcmd.

  1. Откройте командную строку с повышенными привилегиями
  2. выполните следующую команду SQL, чтобы отсоединить базу данных WSUS (SUSDB) от экземпляра внутренняя база данных Windows с помощью программы sqlcmd :

Скопируйте файлы SUSDB в SQL Server

  1. скопируйте SUSDB. mdf и SUSDB_log. ldf из папки данных WID (% SystemDrive%Windows \вид\дата) в папку данных экземпляра SQL.

например, если папка экземпляра SQL — C:\Program files \ Microsoft SQL Server \MSSQL12. мссклсервер\мсскл, а папка данных WID — c:\ Windows \вид\дата, скопируйте файлы SUSDB из C:\ Windows \вид\дата в C:\Program files \ Microsoft SQL Server \MSSQL12. Мссклсервер\мсскл\дата

присоединение SUSDB к экземпляру SQL

Это также можно сделать с помощью Transact-SQL. дополнительные сведения о присоединении базы данных см. в документации по SQL.

Пример (использование путей из предыдущего примера):

проверка SQL Server и имен входа и разрешений базы данных

SQL Server Разрешения для входа

после подключения SUSDB убедитесь, что NT AUTHORITY\NETWORK service имеет разрешения на вход в экземпляр SQL Server, выполнив следующие действия.

  1. Переход к SQL Server Management Studio
  2. Открытие экземпляра
  3. Щелкните Безопасность .
  4. Щелкните имена входа

Должна быть указана учетная запись NT Authority\Network Service . Если это не так, необходимо добавить новое имя для входа.

если SQL экземпляр находится на другом компьютере из служб wsus, учетная запись компьютера сервера WSUS должна быть указана в формате [FQDN] \ [всускомпутернаме] $. В противном случае можно использовать приведенные ниже шаги, чтобы добавить его, заменив NT Authority\Network Service учетной записью компьютера сервера WSUS ([FQDN] \ [всускомпутернаме] $). это может быть дополнением к ПРЕДОСТАВЛЕНию прав на NT Authority\Network Service .

Добавление NT AUTHORITY\NETWORK SERVICE и предоставление ей прав доступа

Снимок экрана: в обозревателе объектов отображается СЕТЕВая служба

Теперь в разделе имена входа будет отображаться NT Authority\Network Service .

Разрешения базы данных

  1. Щелкните правой кнопкой мыши SUSDB
  2. Выберите пункт Свойства.
  3. Щелкните разрешения .

Должна быть указана учетная запись NT Authority\Network Service .

Если это не так, добавьте учетную запись.

В текстовом поле Login name (имя входа) введите компьютер WSUS в следующем формате:

Убедитесь, что для базы данных по умолчанию задано значение SUSDB.

Снимок экрана: диалоговое окно входа, показывающее, что полное доменное имя — Contosto.com * *, а имя компьютера W s U s — W s u s.

На странице Сопоставление пользователей выберите базу данных SUSDB в разделе Пользователи, сопоставленные с этим именем входа .

Снимок экрана: страница

Проверьте службу WebService в разделе членство в роли базы данных для: SUSDB:

чтобы изменения вступили в силу, может потребоваться перезапустить службу SQL.

измените реестр, чтобы указать WSUS на экземпляр SQL Server

Внимательно выполните действия, описанные в этом разделе. Неправильное изменение реестра может привести к серьезным проблемам. Перед внесением изменений создайте резервную копию реестра для его восстановления в случае возникновения проблем.

Откройте следующий раздел: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\UpdateServices\Server\Setup\SqlServerName

В текстовом поле значение введите [SERVERNAME] \ [имя_экземпляра]и нажмите кнопку ОК. Если имя экземпляра является экземпляром по умолчанию, введите [SERVERNAME].

снимке экрана диалогового окна Редактор реестра с выделенным UpdateServices-WidDatabaseным ключом.

Откройте следующий раздел: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Update Services\Server\Setup\Installed Role Services\UpdateServices-WidDatabase

снимка экрана в диалоговом окне редактора реестра, отображающего обновление имени ключа в UpdateServices-Database.

Переименование раздела UpdateServices-Database

если не обновить этот ключ, WsusUtil попытается обслуживать WID, а не SQL экземпляр, к которому был выполнен перенос.

Запуск служб IIS и WSUS на сервере WSUS

В PowerShell (с повышенными правами) выполните:

Если вы используете консоль WSUS, закройте и перезапустите ее.

Удаление роли WID (не рекомендуется)

При удалении роли WID также удаляется папка базы данных (%systemdrive%\Program Files\Update сервицес\датабасе), содержащая скрипты, необходимые WSUSUtil.exe для выполнения задач, выполняемых после установки. Если вы решили удалить роль WID, убедитесь, что создана резервная копия папки %systemdrive%\Program Files\Update сервицес\датабасе .

С помощью PowerShell:

После удаления роли WID убедитесь в наличии следующего раздела реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Update Services\Server\Setup\Installed Role Services\UpdateServices-Database

Читайте также: