Today I spent quite some time building SQL server instances on a Microsoft Failover Cluster. Everything appeared to go as expected with no errors or alerts generated during or after install. Unfortunately at the end I encountered an unexpected error.
Once I had completed deployment to all nodes I tried to move my newly created instances between all the nodes in the cluster to confirm the instance both intra-datacentre and inter-datacentre.
I was rather surprised to be presented with the error message below –
Error Code: 0x80071398
At this point I was only able to move the SQL instance to half of the cluster nodes.
I checked the possible owners for the various instance resources and at first glance everything looked to be OK. Let us take a look at what instance resources are available.
As always I have to blank certain details however we can see that the selected instance has various resources associated with it.
All of the other resources appeared to have the correct ‘Possible Owners’ values set under the ‘Advanced Properties’ tabs –
I’ve used the ‘Server Name’ resource as an example displaying the correct settings. We see that everything is ticked meaning all four nodes can own this resource.
Now let’s take a look at the ‘IP Address’ resource which is found by expanding the ‘Server Name’ resource.
Here we see that only two of the four cluster nodes are ticked – this means the others cannot own this resource and therefore the instance cannot be moved to these nodes. We can also leverage the PowerShell cmdlet get-clusterownernode to display this information.
PS C:\> Get-ClusterOwnerNode -Resource "SQL IP Address 1 (BSA-SQLBSAPREV)" | format-list ClusterObject : SQL IP Address 1 (BSA-SQLBSAPREV) OwnerNodes : {BSA-SQLFOC03N01, BSA-SQLFOC03N04}
Again we see that only two nodes are listed as owners. I don’t know why these boxes failed to select – as mentioned about the installs all completed successfully following the same procedure.
The resolution for this problem is simple – ensure all nodes are selected as possible owners under all instance resources.
PS C:\> Set-ClusterOwnerNode -Resource "SQL IP Address 1 (BSA-SQLBSAPREV)" -Owners BSA-SQLFOC03N01, BSA-SQLFOC03N02, BSA-SQLFOC03N03, BSA-SQLFOC03N04 PS C:\> Get-ClusterOwnerNode -Resource "SQL IP Address 1 (BSA-SQLBSAPREV)" | format-list ClusterObject : SQL IP Address 1 (BSA-SQLBSAPREV) OwnerNodes : {BSA-SQLFOC03N01, BSA-SQLFOC03N02, BSA-SQLFOC03N03, BSA-SQLFOC03N04}
Once the remediation steps were completed the SQL instance was able to move between all nodes without issue.
Thanks Alex that was very detailed and helpful for me.
i was checking ownership on instance properties. but after reading your blog and checked in IP address setting other nodes was not selected. now failover is successful.
Thanks – glad you found this helpful!
You solved my problem. thank you so much, it helps a lot. appreciated!
You’re welcome – glad I could be of assistance.