Проблема синхронизации серверов реплик WSUS 3.0SP2

Май 30th, 2017

Всем хорошо известна такая штука от Microsoft как WSUS 3.0. Вещь для организации не заменимая но у меня произошло то что рано или поздно должно было произойти. При синхронизации с головного сервера сервер реплика доходя до 90 с копейками процентов начал падать в ошибку. При этом обновления обнаруживались и качались сервером репликой и раздавались на уровне организации. Если его поставить как самостоятельный- ошибка исчезает. В результате разборов выяснилось.

Что корень зла внутренняя база данных Windows. Дело в том что MSDE бесплатный сыр в мышеловке от Microsoft. Он имеет ограничение  что использовать может только один процессор, ограничение по потокам итп. Так вот. При синхронизации головного сервера с сервером Microsoft и выходе новых обновлений старые обновления отклоняются НО из базы они не удаляются! В результате MSDE не хватает своей производительности перелопатить базу! И служба Update Service отпадает по тайм ауту.

Прикольный бонус не правда ли???  Естественно что первым в голову приходит установить полноценный SQL но СТОП! Цена на него для одной задачи явно не гуманная :). Пошерстив интернет наткнулся на пару таких статей

http://www.flexecom.com/wsus-replica-server-fails-to-synchronize/

http://www.flexecom.com/how-to-delete-driver-updates-from-wsus-3-0/

В которых достаточно четко описан корень зла 🙂 и как с ним боротся.

Изучив статью я принялся воспитывать головной сервер WSUS. Он поднят на Windows Server 2012 .Взяв дистриб SQL2008R2 я накатил Management Studio на него. Теперь пришла пора цеплятся ко внутреннему серверу MSDE. И тут пара граблей.

В первую очередь запустить оснастку надо именно с повышенными правами Админа.

теперь строки для прицепления к серверу.

в 2012 это

\\.\pipe\Microsoft##WID\tsql\query

А в младших версиях серверов

\\.\pipe\Microsoft##SSEE\sql\query

После чего прицепляемся к серверу MSDE

Ну а дальше как по статье

Выполняем запрос

delete from tbrevisionlanguage where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1))

delete from tbProperty where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1))

delete from tbLocalizedPropertyForRevision where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1 ))

delete from tbFileForRevision where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1 ))

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 ishidden=1 )))

delete from tbPreRequisite where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1 ))

delete from tbDeployment where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1 ))

delete from tbXml where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1 ))

delete from tbPreComputedLocalizedProperty where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1 ))

delete from tbDriver where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1))

delete from tbFlattenedRevisionInCategory where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1))

delete from tbRevisionInCategory where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1))

delete from tbMoreInfoURLForRevision where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1))

delete from tbBundleAtLeastOne where bundledid in (select bundledid from tbBundleAll where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1)))

delete from tbBundleAll where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1))

delete from tbSecurityBulletinForRevision where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1))

delete from tbKBArticleForRevision where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1))

delete from tbRevisionSupersedesUpdate where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1))

delete from tbBundleAtLeastOne where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1))

delete from tbEulaProperty where revisionid in (select revisionid from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1))

delete from tbRevision where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1)

delete from tbUpdateSummaryForAllComputers where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1)

delete from tbInstalledUpdateSufficientForPrerequisite where LocalUpdateId in (select LocalUpdateId from tbUpdate where ishidden=1)

delete from tbUpdate where ishidden = 1

А если надо удалить отклоненные драйвера

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 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 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’)

И все :)… Все на своих местах :)…

Tags:
No comments yet.
You must be logged in to post a comment.