When doing a SQL cluster install, there is a rule for network binding order that causes a warning from time to time. This is really easy to fix, and is a good practice for cluster services to reduce the chance of network latency whilst services try and figure out where they need to go for certain services.
One of the practices we use here is to name the network interface to match the network it is connected to. This aids in quick identification, especially on servers with storage connected via network (iSCSI). For example, in our development environment, our SQL servers have 4 NIC ports assigned:
- 2 for storage
- 1 for heartbeat
- 1 for network access
For the storage Network Interface Card (NIC), we use Storage # where the # is either 17.2 or 17.1 depending on which network it is plugged into, the heartbeat NIC is always called Heatbeat, and the network access is always the network name, and the third octet of the IP block1. This gives us a quick visual identification when looking on the server which port is doing what.
The problem with multiple NICs is that the operating system (according to this post anyway) tries connecting out of the other interfaces, which may cause some delays, impacting server performance. So they added a rule that tests to see if the NIC that the domain is accessible out of is the first in the binding order.
To correct this warning, you have 2 steps, the first is relatively simple, you have to assign a DNS suffix to an interface. To do this:
- Right click on the adapter that is connected to the domain portion of the network, and select properties.
- Select “Internet Protocol Version 4 (TCP/IPv4)” option.
- Click Properties, and then Advanced, then select the DNS tab.
- At the bottom is a box “DNS suffix for this connection:”, type in the domain name, then press OK
- If you have IPv6 enabled, and are using it, repeat 2-4 for IPv6.
- Press OK until you have closed the dialog again.
The next step requires a registry tweak. First we need to find the unique identifier for the network adapter we want to make primary in the binding order. We do this using the command:
wmic nicconfig get description,SettingID
This will return something that looks like this:
Description SettingID
WAN Miniport (SSTP) {4AE6B55C-6DD6-427D-A5BB-13535D4BE926}
WAN Miniport (IKEv2) {DBD85EFC-7CFA-4A38-90A3-4803A40BF61E}
WAN Miniport (L2TP) {66973E50-CF44-46A7-AD86-0F369D30ACA2}
WAN Miniport (PPTP) {F93EB786-8968-43C5-BC58-54D87385060E}
WAN Miniport (PPPOE) {6A16EDEB-24DF-416A-B427-CED88EFCA006}
WAN Miniport (IPv6) {F4373218-ED19-4F3D-8DB4-982009ED86B7}
WAN Miniport (Network Monitor) {5356FE17-48EE-4A7A-BECE-645E20060A52}
Intel(R) PRO/1000 MT Network Connection {FBAEA352-9C60-4817-B6D3-1002E8EA199E}
WAN Miniport (IP) {66513FCE-F1B9-480C-B278-3DD588D5D452}
Intel(R) PRO/1000 MT Network Connection #2 {55A74211-0837-4E0A-86D9-FD20539B79AE}
RAS Async Adapter {DD2F4800-0DEB-4A98-A302-0777CB955DC1}
Microsoft ISATAP Adapter {473AD229-5193-44E5-AF39-3FBF3148C63A}
Intel(R) PRO/1000 MT Network Connection #3 {46684381-19EC-47B2-93D4-153B4234DDC5}
Intel(R) PRO/1000 MT Network Connection {B18304E7-A773-4DE1-952E-0B6B070F0A20}
Microsoft Failover Cluster Virtual Adapter {45B8176B-FABC-4215-B980-3CAE48372844}
Microsoft ISATAP Adapter {535A746F-AAEC-4DB6-B77F-0756EC6EF254}
Microsoft ISATAP Adapter {192A4BC3-29CD-42EF-B417-940CA034155A}
Microsoft Teredo Tunneling Adapter {5F00265E-C19D-4AA4-9045-696A3A4E9143}
The names on the left are the descriptions you see in the network control panel, the values on the right are the unique identifiers for that device. Once you have matched up the values to the one you need, it’s time to hit the registry2, where we’re looking for the key:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Linkage\Bind
This key is a multi-line string field, which will contain the list of values such as \device\{unique id}. Find the value that matches the one of the NIC you need to be primary, and move it to the top of the list. Press OK once done, and close the registry editor. You should be able to click the “Re-run” button the SQL configuration test, and see this warning goes to OK.