вторник, 30 мая 2017 г.

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

Всем хорошо известна такая штука от 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’)
И все :)… Все на своих местах :)…

Комментариев нет:

Отправить комментарий

При обновлении VCenter 6.7 до VCenter 7.0 ошибка Host not found

 Всем доброго времени суток! При обновлении VCenter 6.7 до версии 7.0 пришлось столкнуться со следующей ошибкой при обновлении , точнее в пр...