Всем хорошо известна такая штука от 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
Ну а дальше как по статье
Выполняем запрос
При этом обновления обнаруживались и качались сервером репликой и раздавались на уровне организации. Если его поставить как самостоятельный- ошибка исчезает. В результате разборов выяснилось.
Что корень зла внутренняя база данных 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’)И все :)… Все на своих местах :)…
Комментариев нет:
Отправить комментарий