Sql-server – RegisterAllProvidersIP 1 or 0 For The Cluster Resource

availability-groupssql server

I have set up clustering across two sites, at each site there is a single instance of SQL 2014 enterprise and I am using Availability Groups.

I know I need to set RegisterAllProvidersIP for the AG Network name in order for the listener to check both IP Addresses.

One thing I'm not sure about is if I need to set RegisterAllProvidersIP for the actual cluster name??

Object Name Value Type


??????AG01_??????01 RegisterAllProvidersIP 1 UInt32

Object Name Value Type


Cluster Name RegisterAllProvidersIP 1 UInt32 <—–?????????????

Thanks in advance

Best Answer

I believe the RegisterAllProvidersIP is set to 1 automatically when you create the listener. With this setting, all subnets' IP addresses will be attached to the listener name. This is great, unless you're using older clients that do not support the MultiSubnetFailover option. If you do have such clients, you'll end up getting client connection timeouts (in our testing, we have 2 subnets and we'd get 50% connection timeouts).

To work around this (because we have fun legacy code), we set RegisterAllProvidersIP to 0 which only allows the primary node's IP address to register as the listener in DNS. The downfall of this is that we then had to understand DNS replication such that, in the event of a failover, the domain controller may not be in DNS cache (which relies on TTL for when to refresh) so the instance may not be available for a bit after failover, until the cache refreshes. We decided upon a 5 minute HostRecordTTL value (instead of the default 20 minutes) since our second subnet would only be used in a DR exercise or situation and that 5 minutes would be absorbed in the other DR activities.

At any rate, here is how you can get and set those values on the local machine:

Import-Module FailoverClusters
Get-ClusterResource {{name}} | Get-ClusterParameter