Total Pageviews

Thursday, May 2, 2013

Network Binding Order – SQL 2012 Failover Cluster Installation

“The domain network is not the first bound network. This will cause domain operations to run slowly and can cause timeouts that result in failures. Use the Windows network advanced configuration to change the binding order.”

The “Network binding order” warning message usually arises when SQL Server cluster rule check is performed. Many sysadmin and dba ignore this warning as they think that this warning may not be an issue as they have done everything correctly. Should we ignore this message? Off course not!

This warning should be resolved as soon as possible, although SQL Server cluster installation allows installing SQL Server without showing any further warnings. But the consequence of this misconfiguration can seriously degrade Network performance if the NIC order stayed in an inappropriate way. Many Network packets will fail, and the Network protocol will not proceed further until that failure occurs. As a result, the network throughput will be reduced and a time-out issue will occur.

In this article we will be fixing the issue in easy way. Please note that this fix is equally applicable to all versions of Windows and SQL Server installation.

Test Environment:

1.       A two node Windows 2012 Cluster.
2.       Domain name:
3.       Two NIC Cards: Ethernet1 and Ethernet2.
4.       One NIC for cluster heartbeat in each node.
5.       The entire environment is running inside VMWare ESXi 5.1.

VB Script to check Network Binding Order:
Following the script I have collected from a MSDN blog site (link given at the bottom). You can save the script with vbs extensions and run it in each node to see if there is a network binding issue. We can perform this test before starting of SQL Server installation and correct any binding orders reported. We can also check the “network binding order” any time and fix it if the issue exists.

The VB script:

Const HKCU = &H80000001
Const HKLM = &H80000002

strComputer = "."
strUDN = "User Domain Name"
strFNDN = "First NIC Domain Name"
Set oReg=GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

Wscript.Echo "The User DNS Domain name should (case insensitive) match the Domain Name against the first NIC in the binding list."

Return = oReg.GetStringValue(HKCU,"Volatile Environment","USERDNSDOMAIN",strUDN)
If (Return = 0) And (Err.Number = 0) Then
 Wscript.Echo "User DNS Domain : " & strUDN
 Wscript.Echo "Error retrieving User DNS Domain!! "
End If

Return = oReg.GetMultiStringValue(HKLM,"SYSTEM\CurrentControlSet\services\Tcpip\Linkage","Bind",mstrValues)

If (Return = 0) And (Err.Number = 0) Then
 For Each strValue In mstrValues
  oNICGuid = split(strValue,"\",-1)(2)
  Return = oReg.GetStringValue(_
   "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DNSRegisteredAdapters\" & oNICGuid,_
  If (Return = 0) And (Err.Number = 0) Then
   Wscript.Echo oNICGuid & "  : " & strPDN
   If (strValue = mstrValues(0)) Then
    strFNDN = strPDN
   End If
   Wscript.Echo oNICGuid & "  : -NA or None Found- "
  End If
    Wscript.Echo "GetMultiStringValue failed. Error = " & Err.Number & " returned " & Return
End If

If StrComp(strUDN, strFNDN, vbTextCompare) Then
 Wscript.Echo "PROBLEM!!!! : " & strUDN & " <> " & strFNDN
 Wscript.Echo "All is OK!! : " & strUDN & " = " & strFNDN
End If

Wscript.Echo "All done.."
The outputs from the above VBScript code tell us that there is a Network bind order issue. In my case, the domain “” is not pointing to the first network card. Thus we need to take note of the corresponding GUID from the pop up. Following are the screenshots:

Figure #1: GUID and corresponding domain

Figure #2: Network binding issue

Let’s start installing a SQL Cluster:
Start the SQL Server cluster installation then will see that the cluster rule check process reports the following error:

Figure#3: Network binding order issue detected

SQL Server “…\Setup Bootstrap\log\......\detail.txt” gives the following logged message.

Figure#4: Warning message in setup bootstrap

Now if we check the Network connection’s advanced options, we will find that the network binding order is correct. No issues here (figure#5A, B), but SQL Server installation is still giving us a warning. Though Windows is showing it is in the correct binding order, registry somehow did not get updated.

Figure#5A: Network Connection

Figure#5B: Network Connection – advanced option

How to fix?
To fix the binding order, we need to edit and rearrange the registry key. Following is a step by step guideline to resolve a “Network Binding Order” issue. In our case the GUID “8FAC2E71-1E2B-4BBC-8B9F-DD05AB4F63F3 ” must be on the top in the registry key array.

1.       Open the registry editor (regedit.exe)
2.       Locate the following key:


3.       Open the bind key (figure#6). Locate the GUID associated with the domain we took note on with the VB Script earlier or the GUID reported in setup bootstrap “detail.txt”. In our case the GUID is follows (marked in yellow).

8FAC2E71-1E2B-4BBC-8B9F-DD05AB4F63F3 =

Figure#6: Registry Editor for “Network Binding order


4.       Cut the GUID value (which is 8FAC2E71-1E2B-4BBC-8B9F-DD05AB4F63F3 in figure#7) in the registry editor and move it to the top (figure#8). Save and exit. We are done.

Figure#7: GUID is the second place (before correction)

Figure#8: GUID in the top place (after correction)

The Issue is Resolved:
Now re-run the VB Script or SQL Server Cluster Rule Check; the “Network Binding Order” warning disappears as shown in the following figure#9.

Figure#9: Resolved network binding issue

I hope this guide will help you to resolve the mysterious “Network Binding Order” issue. This issue needs to be fixed in any SQL Server installation.

See More:
Network Binding Order Rule Warning in SQL Server 2008 Cluster Setup Explained

Network Binding Order Warning in SQL Server 2008R2 Cluster Installation

No comments:

Post a Comment