WSUS控制檯由於程序異常崩潰

    今天碰到一個關於WSUS控制檯無法查看和刷新計算機組的問題,用戶只要在計算機組裏面刷新計算,選擇“任何”類型的計算機,WSUS控制檯會馬上崩潰,如下圖:

image

轉到計算機應用程序日誌,會發現如下日誌記錄:

WSUS 管理控制檯遇到意外錯誤。這可能是暫時錯誤;請嘗試重新啓動該管理控制檯。如果此錯誤仍然存在,

請嘗試通過刪除 %appdata%\Microsoft\MMC\ 下的 wsus 文件來刪除該控制檯的永久性首選項。


WSUS 管理控制檯遇到意外錯誤。這可能是暫時錯誤;請嘗試重新啓動該管理控制檯。如果此錯誤仍然存在,

請嘗試通過刪除 %appdata%\Microsoft\MMC\ 下的 wsus 文件來刪除該控制檯的永久性首選項。


System.Xml.XmlException – “口”(十六進制值 0x16)是無效的字符。 第 1 行,位置 7363841。

Source
System.Xml

Stack Trace:
    在 System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
    在 System.Xml.XmlTextReaderImpl.ParseNumericCharRefInline(Int32 startPos, Boolean expand, StringBuilder internalSubsetBuilder, Int32& charCount, EntityType& entityType)
    在 System.Xml.XmlTextReaderImpl.ParseCharRefInline(Int32 startPos, Int32& charCount, EntityType& entityType)
    在 System.Xml.XmlTextReaderImpl.ParseText(Int32& startPos, Int32& endPos, Int32& outOrChars)
    在 System.Xml.XmlTextReaderImpl.ParseText()
    在 System.Xml.XmlTextReaderImpl.ParseElementContent()
    在 System.Xml.XmlReader.ReadStartElement()
    在 System.Xml.Serialization.XmlSerializationReader.ReadStringValue()
    在 System.Xml.Serialization.XmlSerializationReader.ReadTypedPrimitive(XmlQualifiedName type, Boolean elementCanBeType)
    在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderApiRemotingCompressionProxy.Read1_Object(Boolean isNullable, Boolean checkType)
    在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderApiRemotingCompressionProxy.Read2_GenericReadableRow(Boolean isNullable, Boolean checkType)
    在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderApiRemotingCompressionProxy.Read339_Item()
    在 Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer623.Deserialize(XmlSerializationReader reader)
    在 System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
** this exception was nested inside of the following exception **


System.InvalidOperationException -- XML 文檔(1, 7363841)中有錯誤。

Source
System.Xml

Stack Trace:
    在 System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
    在 System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle)
    在 System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
    在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
    在 Microsoft.UpdateServices.Internal.ApiRemoting.ExecuteSPSearchComputers(String computerTargetScopeXml)
    在 Microsoft.UpdateServices.Internal.DatabaseAccess.AdminDataAccessProxy.ExecuteSPSearchComputers(String computerTargetScopeXml)
    在 Microsoft.UpdateServices.Internal.BaseApi.ComputerTarget.SearchComputerTargets(ComputerTargetScope searchScope, UpdateServer updateServer)
    在 Microsoft.UpdateServices.UI.AdminApiAccess.BulkComputerPropertiesCache.GetAndCacheComputers(ExtendedUpdateScope updateScope, ComputerTargetScope computerTargetScope)
    在 Microsoft.UpdateServices.UI.SnapIn.Pages.ComputersListPage.GetListRows()

仔細查看上面的錯誤,請注意

image

image

說明控制檯在獲取數據庫數據的時候,數據庫中包含了非法字符,導致WSUS在呈現數據的時候出現的錯誤,無法解釋非法字符。控制檯直接崩潰。這種情況,在SCCM中也可能 會出現,主要的原因是由於,客戶端計算機中的某些信息,這些信息中包含了非法字符。

解決辦法:通過SQL管理工具,打開WSUS數據庫中的dbo.tbComputerTargetDetail 表,編輯所有行(如何編輯所有行自行百度);返回結果如下,點擊左上角全選數據,Ctrl+C複製所有數據,通過Notdpad++打開,複製到Notepad++中去

image

搜索

image

中顯示的那個方框字符,搜索方法就是,在日誌中複製這個字符,然後在Notepad++中粘貼,搜索。

image

找到這個字符後,有個對應的TargetID,根據ID,在數據庫中找到對應的行,然後修改非法字符,填入一個合法字符,必須DELL或者HP。關閉SQL管理工具。打開控制檯,故障修復。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章