The Easy Way: BIOS Them From Orbit
The easy way to fix this, is to update the BIOS on *ALL* of your systems and then let the computer report the new changes to WSUS. Once all computers report back in with the new BIOS version, your crashes will likely stop. Now wait a second, I thought you said this is the easy way? It is, provided you have a small number of systems to deal with. However if you have a lot of systems, while a great practice, it can be a logistical nightmare.
The FASTER Way: Finding The System(s) Causing The Problem
Find the system or systems that are causing the problem and just update those BIOS versions. This is the faster course of action but requires a little bit of digging to find out what the problem system(s) are.
You need to find out what SYN symbol is causing your issues. This will come from the detailed crash information of the WSUS MMC Console when you view the All Computers group and it crashes.
The WSUS administration console has encountered an unexpected error. This may be a transient error; try restarting the administration console. If this error persists,
Try removing the persisted preferences for the console by deleting the wsus file under %appdata%\Microsoft\MMC\.
The WSUS administration console has encountered an unexpected error. This may be a transient error; try restarting the administration console. If this error persists,
Try removing the persisted preferences for the console by deleting the wsus file under %appdata%\Microsoft\MMC\.
System.Xml.XmlException -- '', hexadecimal value 0x16, is an invalid character. Line 1, position 19286.
Source
System.Xml
Stack Trace:
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.ParseNumericCharRefInline(Int32 startPos, Boolean expand, StringBuilder internalSubsetBuilder, Int32& charCount, EntityType& entityType)
at System.Xml.XmlTextReaderImpl.ParseCharRefInline(Int32 startPos, Int32& charCount, EntityType& entityType)
at System.Xml.XmlTextReaderImpl.ParseText(Int32& startPos, Int32& endPos, Int32& outOrChars)
at System.Xml.XmlTextReaderImpl.ParseText()
at System.Xml.XmlTextReaderImpl.ParseElementContent()
at System.Xml.XmlReader.ReadStartElement()
at System.Xml.Serialization.XmlSerializationReader.ReadStringValue()
at System.Xml.Serialization.XmlSerializationReader.ReadTypedPrimitive(XmlQualifiedName type, Boolean elementCanBeType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderApiRemotingCompressionProxy.Read1_Object(Boolean isNullable, Boolean checkType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderApiRemotingCompressionProxy.Read2_GenericReadableRow(Boolean isNullable, Boolean checkType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderApiRemotingCompressionProxy.Read249_Item()
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
** this exception was nested inside of the following exception **
System.InvalidOperationException -- There is an error in XML document (1, 19286).
Source
System.Xml
Stack Trace:
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at Microsoft.UpdateServices.Internal.ApiRemoting.ExecuteSPSearchComputers(String computerTargetScopeXml)
at Microsoft.UpdateServices.Internal.DatabaseAccess.AdminDataAccessProxy.ExecuteSPSearchComputers(String computerTargetScopeXml)
at Microsoft.UpdateServices.Internal.BaseApi.ComputerTarget.SearchComputerTargets(ComputerTargetScope searchScope, UpdateServer updateServer)
at Microsoft.UpdateServices.UI.AdminApiAccess.ComputerTargetManager.GetComputerTargets(ComputerTargetScope searchScope)
at Microsoft.UpdateServices.UI.AdminApiAccess.BulkComputerPropertiesCache.GetAndCacheComputers(ExtendedUpdateScope updateScope, ComputerTargetScope computerTargetScope)
at Microsoft.UpdateServices.UI.SnapIn.Pages.ComputersListPage.GetListRows()
- Connect to the SUSDB database by using SQL Server Management Studio (SSMS) whether you’re using the Windows Internal Database (WID), or a full-blown SQL Server instance.
- Expand SUSDB and click on the New Query button.
- Copy and paste the following Query into the window.
USE SUSDB SELECT tbComputerTargetDetail.*, tbComputerTarget.FullDomainName, tbComputerTarget.IPAddress FROM tbComputerTarget INNER JOIN tbComputerTargetDetail ON tbComputerTarget.TargetID = tbComputerTargetDetail.TargetID
- Press F5 or click the Execute button to execute the query. It will pull every computer’s detailed information. Copy the data into the clipboard by right clicking the top left blank corner of the results grid and choosing “Copy with Headers”.
- Open Notepad++ and paste in the data.
- Search for the for that invalid SYN symbol (your symbol might be different than the one listed above – copy it from the error message’s XML output and in NotePad++, press CTRL-F and paste it into the search box).
- Once you’ve found the invalid SYN symbol, scroll over to the right until you find the fully qualified domain name and the last known reported IP address of the computer that’s causing your issues. Now you have your target system. Note what column has the invalid SYN character. Most of the time it’s one of the BIOS fields.
- If the invalid SYN character is in one of the BIOS fields, either force the BIOS to update to the latest version remotely (communicate this with the user for a positive customer service experience), or physically locate it and update it manually.
- Run the client side script on the client machine to force it to update with WSUS.
- Wait for the Windows Update Agent to report back the details of the computer system with the WSUS server.