How to fix “Error: Database Error” Reset Server Node on WSUS

So after installing WSUS on Server 2012, I returned to it the next day to see this. Clicking Reset Server Node does nothing.

If you’ve ever dealt with WSUS for an extended period of time, you’re probably used to this and if you haven’t, get used to it.
So in the event viewer I saw these errors. Always a fun way to start your Friday…
Event 7032
The WSUS administration console was unable to connect to the WSUS Server via the remote API. 
Verify that the Update Services service, IIS and SQL are running on the server. If the problem persists, try restarting IIS, SQL, and the Update Services Service.
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%MicrosoftMMC.
System.IO.IOException — The handshake failed due to an unexpected packet format.
Event 7053
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%MicrosoftMMC.
Event 12072
The WSUS content directory is not accessible.
Event 12052
The DSS Authentication Web Service is not working.
Event 12042
The SimpleAuth Web Service is not working.
Event 12022
The Client Web Service is not working.
Event 12032
The Server Synchronization Web Service is not working.
Event 12012
The API Remoting Web Service is not working.
Event 12002
The Reporting Web Service is not working.
Event 13042
Self-update is not working.
That’s a lot of errors and this is right after a WSUS reinstall. When I restarted, it seemed like it would work for a bit and then crash again.
After going into IIS Manager, I noticed that WSUS Pool has stopped under Application Pools. I dug around a bit and found that this is a memory issue for this particular application pool. 
In order to fix this, you have to select WsusPool and click Recycling.
Deselect Private memory usage (in KB)
Leave everything else the same and click Next. Then click Finish.
Now start WsusPool.
Now WSUS should start up for you.

How to install and configure WSUS (Windows Server Update Service)

Open Server Manager
Click Add roles and features
Click Next, choose Role-base or feature-based installation
Click Next. Choose your server. I will be installing this on the local server.
Click Next. Scroll down and choose Windows Server Update Services.
I believe .NET Framework 3.5 is required. I don’t remember because this is a reinstall and I already have it and .NET Framework 4.5 installed as well.
Click Next.
Click Next. Here you have the option of installing it with the Windows Internal Database (which is more than capable for smaller environments) or installing to a SQL server database that you might have in your environment. You can either choose WID Database and WSUS Services or Database and WSUS Services.
Click Next. Now choose how you want to store your updates. You can choose to store them on a file share of some sort or you can have each client download directly from Microsoft update. In my environment, we have one location where the servers reside and then some remote locations. I’d still like to manage the updates for them but in my opinion, it would be better for those clients to download straight from Microsoft Update instead of over our VPN so I will uncheck the box.
Click Next. I also have a database server so I will elect to use that so I will enter the name of that here. If you elected to use the Windows Internal Database (WID), you will not see this.
Click Next. Make sure everything is the way you like it and click Install.
And now we wait.
After it is finished installing and you elected to use your own database server, you will be met with this dialog box when you open WSUS. Put in the name of your database server and click Run.
Next will be the Configuration Wizard. Click Next.
It’s obviously up to you whether you would like to share your data with Microsoft. Click Next.
This is my only server running WSUS so I will click Next.
I don’t need to use a Proxy Server so I will click Next.
This part is self explanatory. Click Start Connecting. This may take awhile.
Click Next. Now choose the products that you would like to manage updates for.
Click Next. Now choose your classifications.
Click Next. Choose how you would like to handle synchronizations. I like mine to be as automatic as I can.
Click Next. Choose whether you would like to Begin Initial Synchronization or not.
Once it opens, I’m going to turn on Automatic Approvals so I will go to Options.
Click Automatic Approvals.
You should see Default Automatic Approval Rule. (If not create it.) Check the box next to it and click Edit.
Select which updates to approve. This is up to you.
Well looks like I’ll have to wait to change that.
Eventually you’ll have to configure your clients and servers to receive updates from your WSUS server through Group Policy. When you do that, you can specify how they are grouped in WSUS. Now I don’t remember if this is done automatically after you set it and push the Group Policy or if you have to do this first manually but I’d rather be safe than sorry so I will create the two groups here. This is not necessary to do and they can be left unassigned.

Rick click All Computers and click Add Computer Group…, name each group (remember these for the group policy creation later) and click Add.

I chose Workstations and Servers so I will eventually have to create two separate group policies, one for my workstations and one for my servers. Another option I thought of would be to do this by site or location.
There are a ton more settings that you can change that I won’t go into now but maybe I’ll cover in future posts. This should get you pointed in the right direction. Your clients will not pull updates from this server unless configured to do so and that should be done through group policy. I cover that here.

UPDATE 9/12/17

I forgot a step. In order for the computers to go into their groups (after being assigned via Group Policy) a setting needs to be changed here. Click Options –> Computers –> Use Group Policy or registry settings on computers –> OK.


How to fix server manager always crashing.

To the event viewer. 

Faulting application name: ServerManager.exe, version: 6.3.9600.17238, time stamp: 0x53d0b3e7
Faulting module name: KERNELBASE.dll, version: 6.3.9600.18666, time stamp: 0x58f33794
Exception code: 0xe0434352
Fault offset: 0x00000000000095fc
Faulting process id: 0x2b08
Faulting application start time: 0x01d32268e6cec67e
Faulting application path: C:Windowssystem32ServerManager.exe
Faulting module path: C:Windowssystem32KERNELBASE.dll
Report Id: 24fc1112-8e5c-11e7-80ed-000c29f2e9e5
Faulting package full name:
Faulting package-relative application ID:


Application: ServerManager.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.DllNotFoundException
at MS.Win32.Penimc.UnsafeNativeMethods.CreateResetEvent(IntPtr ByRef)
at System.Windows.Input.PenThreadWorker..ctor()
at System.Windows.Input.PenThreadPool.GetPenThreadForPenContextHelper(System.Windows.Input.PenContext)
at System.Windows.Input.StylusWisp.WispTabletDeviceCollection.UpdateTabletsImpl()
at System.Windows.Input.StylusWisp.WispTabletDeviceCollection.UpdateTablets()
at System.Windows.Input.StylusWisp.WispTabletDeviceCollection..ctor()
at System.Windows.Input.StylusWisp.WispLogic.get_WispTabletDevices() at System.Windows.Input.StylusWisp.WispLogic.RegisterHwndForInput(System.Windows.Input.InputManager, System.Windows.PresentationSource)
at System.Windows.Interop.HwndStylusInputProvider..ctor(System.Windows.Interop.HwndSource) at

at System.Windows.Window.CreateSourceWindow(Boolean)
at System.Windows.Interop.WindowInteropHelper.EnsureHandle() at Microsoft.Windows.ServerManager.Common.ArgumentsProcessor.InitListener(System.Windows.Application, IntPtr)
at System.Windows.Application.OnStartup(System.Windows.StartupEventArgs)
at System.Windows.Application.<.ctor>b__1_0(System.Object)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) at MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
at MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate) at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef) at System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
at System.Windows.Application.RunDispatcher(System.Object)
at System.Windows.Application.RunInternal(System.Windows.Window) at Microsoft.Windows.ServerManager.SingleInstanceAppLauncher.StartApplication(Microsoft.Windows.ServerManager.Common.ArgumentsProcessor)
at Microsoft.Windows.ServerManager.MainApplication.Main(System.String[])

.NET Runtime? What’s that again? Maybe not relevant but whatever.
A few searches have said that it has to do with an Intel display driver of some sort and that seems to fix it for others but in my case it’s a virtual machine. Moving on.
This guy says to rename a registry entry. I hate messing with the registry but this one looks fairly safe. I’ll give it a shot.

The first point of solution is to clear the Server Manager. Please follow below steps to clear the Server Manager Cache through registry editor

Rename the registry key HKLMSOFTWAREMicrosoftServerManagerServicingStorageServerComponentCache to ServerComponentCache.old

I hope this works….
Well it certainly didn’t hurt anything but it didn’t work.
Okay now what?
So I noticed this:

Faulting module path: C:Windowssystem32KERNELBASE.dll

Maybe I can copy that file over from one of my other servers but first let’s see if Server Manager works on either of the other two.

Microsoft what did you do??
This thread might be the ticket. One user mentioned it started happening after the June 2017 rollup. Also here’s another thread I looked at that might help.
In that thread Ian Valerio says this:

I manually uninstalled KB3186539 and downloaded the offline .NET 4.7 Installer. After installing the update my issue was resolved. Thank you! Also my PowerShell ISE is opening with no issues. Again Thank you all!

Let’s try it. .NET 4.7 Installer

Dammit. Looks like I’ll be waiting a bit.

Time to restart. Let’s see if that was the issue.

Ta Da!

Now to see if installing that update manually will break it again.
That was it. Thanks again Ian Valerio.

How to fix “Unable to read RD Gateway Server settings.”

I was just met with this message when trying to connect to the RD Gateway Server (locally). Restarting the server will not fix it.
In my case this is a remote desktop terminal server hosting a remote app for my users. It doesn’t seem to be having any affect on their usability.
What’s interesting is that the same time that this started happening, I also started to not be able to open my Server Manager without it crashing. I have no idea if these are related yet.
Getting a lot of these errors in my event viewer. Not sure if related.

I just read on another site to re-add the Default Web Site to IIS. Now I already have one called Default Site but who knows, it’s worth a shot.
Here’s how it said to do it:

  • Open IIS Manager.
  • Right-click Sites node under your machine in the Connections tree on the left side and click Add Website
  • Enter “Default Web Site” as a Site name
  • Set Application pool back to DefaultAppPool
  • Set Physical path to %SystemDrive%inetpubwwwroot
  • Leave Binding and everything else as is

Okay? I’ll just click Yes and see what happens.

Alright, it’s there. Let’s see if it did anything….
Yup that did it.
Now to find out why Server Manager won’t open….

Scroll to top