I have a 2 node failover cluster that I'm trying to patch. The initial patch level of the nodes was SQL Server 2016 SP1-CU1 (OS: Windows Server 2016 Standard) and I'm trying to upgrade to SQL Server 2016 SP1-CU3. I started by patching the inactive node (Node 2) and I was able to install CU3 without any issues. After performing a failover to Node 2 and determining that the patch was successful, I tried patching the newly inactive node (Node 1). The installer fails a few seconds after hitting "Update". Here are the Summary results:
Overall summary:
Final result: The patch installer has failed to update the following instance: > MSSQLSERVER. To determine the reason for failure, review the log files.
Exit code (Decimal): -2068578302
Requested action: PatchInstance MSSQLSERVER overall summary:
Final result: The patch installer has failed to update the shared features. To determine the reason for failure, review the log files.
Exit code (Decimal): -2068578302
Exit facility code: 1204 Exit error code: 2
Exit message: The cluster group cannot be determined for the instance name 'MSSQLSERVER'. This indicates there is a problem with the product registry setting for ClusterName, with product discovery, or the cluster resources.
Requested action: Patch
The ClusterName in the registry is okay and product discovery runs successfully. Not seeing any errors in Event Viewer. Here is the stack dump from Detail.txt
There was an issue determining the cluster debugging information. Setup will continue. (01) 2017-07-07 09:33:14 Slp: The following is an exception stack listing the exceptions in outermost to innermost order (01) 2017-07-07 09:33:14 Slp: Inner exceptions are being indented (01) 2017-07-07 09:33:14 Slp: (01) 2017-07-07 09:33:14 Slp: Exception type: System.InvalidOperationException (01) 2017-07-07 09:33:14 Slp: Message: (01) 2017-07-07 09:33:14 Slp: There was an error generating the XML document. (01) 2017-07-07 09:33:14 Slp: HResult : 0x80131509 (01) 2017-07-07 09:33:14 Slp: Stack: (01) 2017-07-07 09:33:14 Slp: at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id) (01) 2017-07-07 09:33:14 Slp: at System.Xml.Serialization.XmlSerializer.Serialize(Stream stream, Object o, XmlSerializerNamespaces namespaces) (01) 2017-07-07 09:33:14 Slp: at Microsoft.SqlServer.Configuration.ClusterConfiguration.DiscoverClusterDataAction.ExecuteAction(String actionId) (01) 2017-07-07 09:33:14 Slp: Inner exception type: Microsoft.SqlServer.Configuration.Cluster.ClusterGroupsLookupException (01) 2017-07-07 09:33:14 Slp: Message: (01) 2017-07-07 09:33:14 Slp: There was an error to lookup cluster groups. Error: There was a failure to call cluster code from a provider. Exception message: Generic failure . Status code: 4098. Description: Not found (01) 2017-07-07 09:33:14 Slp: . (01) 2017-07-07 09:33:14 Slp: HResult : 0x86d8000e (01) 2017-07-07 09:33:14 Slp: FacilityCode : 1752 (6d8) (01) 2017-07-07 09:33:14 Slp: ErrorCode : 14 (000e) (01) 2017-07-07 09:33:14 Slp: Data: (01) 2017-07-07 09:33:14 Slp: errorMessage = There was a failure to call cluster code from a provider. Exception message: Generic failure . Status code: 4098. Description: Not found . (01) 2017-07-07 09:33:14 Slp: WatsonData = Microsoft.SqlServer.Configuration.Cluster.ClusterGroupsLookupException@14 (01) 2017-07-07 09:33:14 Slp: Stack: (01) 2017-07-07 09:33:14 Slp: at Microsoft.SqlServer.Configuration.Cluster.WindowsCluster.get_Groups() (01) 2017-07-07 09:33:14 Slp: at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write70_WindowsCluster(String n, String ns, WindowsCluster o, Boolean isNullable, Boolean needType) (01) 2017-07-07 09:33:14 Slp: at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write224_WindowsCluster(Object o) (01) 2017-07-07 09:33:14 Slp: Inner exception type: Microsoft.SqlServer.Configuration.Cluster.ClusterProviderDetailedException (01) 2017-07-07 09:33:14 Slp: Message: (01) 2017-07-07 09:33:14 Slp: There was a failure to call cluster code from a provider. Exception message: Generic failure . Status code: 4098. Description: Not found (01) 2017-07-07 09:33:14 Slp: . (01) 2017-07-07 09:33:14 Slp: HResult : 0x86d70002 (01) 2017-07-07 09:33:14 Slp: FacilityCode : 1751 (6d7) (01) 2017-07-07 09:33:14 Slp: ErrorCode : 2 (0002) (01) 2017-07-07 09:33:14 Slp: Data: (01) 2017-07-07 09:33:14 Slp: ExceptionMessage = Generic failure (01) 2017-07-07 09:33:14 Slp: StatusCode = 4098 (01) 2017-07-07 09:33:14 Slp: Description = Not found (01) 2017-07-07 09:33:14 Slp: WatsonData = Microsoft.SqlServer.Configuration.Cluster.ClusterProviderDetailedException@2 (01) 2017-07-07 09:33:14 Slp: Stack: (01) 2017-07-07 09:33:14 Slp: at Microsoft.SqlServer.Configuration.Cluster.WmiClusterGroup.get_Name() (01) 2017-07-07 09:33:14 Slp: at Microsoft.SqlServer.Configuration.Cluster.WindowsCluster.get_Groups() (01) 2017-07-07 09:33:14 Slp: Inner exception type: System.Management.ManagementException (01) 2017-07-07 09:33:14 Slp: Message: (01) 2017-07-07 09:33:14 Slp: Generic failure (01) 2017-07-07 09:33:14 Slp: HResult : 0x80131501 (01) 2017-07-07 09:33:14 Slp: Data: (01) 2017-07-07 09:33:14 Slp: WmiErrorCode = Failed (01) 2017-07-07 09:33:14 Slp: WatsonData = Failed@4098 (01) 2017-07-07 09:33:14 Slp: Description = Not found (01) 2017-07-07 09:33:14 Slp: ErrorType = 2 (01) 2017-07-07 09:33:14 Slp: Operation = GetObject (01) 2017-07-07 09:33:14 Slp: ParameterInfo = MSCluster_ResourceGroup.Name="Available Storage" (01) 2017-07-07 09:33:14 Slp: ProviderName = MS_CLUSTER_PROVIDER (01) 2017-07-07 09:33:14 Slp: StatusCode = 4098 (01) 2017-07-07 09:33:14 Slp: Stack: (01) 2017-07-07 09:33:14 Slp: at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode) (01) 2017-07-07 09:33:14 Slp: at System.Management.ManagementObject.Initialize(Boolean getObject) (01) 2017-07-07 09:33:14 Slp: at System.Management.ManagementBaseObject.get_Properties() (01) 2017-07-07 09:33:14 Slp: at System.Management.ManagementBaseObject.GetPropertyValue(String propertyName) (01) 2017-07-07 09:33:14 Slp: at Microsoft.SqlServer.Configuration.WMIInterop.ResourceGroup.get_Name() (01) 2017-07-07 09:33:14 Slp: at Microsoft.SqlServer.Configuration.Cluster.WmiClusterGroup.get_Name() (01) 2017-07-07 09:33:14 Slp: Completed dumping final cluster state.
What sticks out to me here is the failure of grabbing the resource group "Available Storage" using WMI; so I thought I would play around with writing some powershell to collect resource groups using get-wmiobject to see if I could track down any possible errors there. When I run the following snippet
get-wmiobject mscluster_resourcegroup -computer COMPUTERNAME-N1 -namespace "ROOT\MSCluster"
I do not receive any values; if I run this same script against Node 2 and any other node in all of my other failover clusters, no matter if it's active or inactive, I'm able to pull back the 3 resource groups (Available Storage, Cluster Group, and SQL Server (MSSQLSERVER)). I've done basic research to see if the WMI repository is corrupt, but nothing is pointing me in that direction. Any ideas? Thanks!