Availability Group Automatic Failover (Windows rollup)

Microsoft.SQLServer.Windows.Rollup.AvailabilityGroup.AutomaticFailoverReadiness (DependencyMonitor)

This monitor checks whether the Availability Group has at least one secondary replica which is failover ready. The monitor becomes unhealthy and alert is registered when the failover mode of primary replica is automatic but none of secondary replica in the Availability Group is automatic failover ready. The monitor is healthy when at least one secondary replica is automatic failover ready. This monitor is a dependency (rollup) monitor.

Knowledge Base article:

Summary

This monitor checks whether the Availability Group has at least one secondary replica which is failover ready. The monitor becomes unhealthy and alert is registered when the failover mode of primary replica is automatic but none of secondary replica in the Availability Group is automatic failover ready. The monitor is healthy when at least one secondary replica is automatic failover ready.

Causes

The Availability Group is not ready for automatic failover. The primary replica is configured for automatic failover; however, the secondary replica is not ready for automatic failover. The secondary replica that is configured for automatic failover might be unavailable or its data synchronization state is currently not SYNCHRONIZED.

Resolutions

Overridable Parameters

Name

Description

Default Value

Enabled

Enables or disables the workflow.

Yes

Generates Alerts

Defines whether the workflow generates an Alert.

No

Rollup Algorithm

Defines the health state of the dependency rollup monitor to reflect either the least healthy state or the most healthy state of any member.

Best state of any member

Element properties:

TargetMicrosoft.SQLServer.Core.AvailabilityGroup
Parent MonitorMicrosoft.SQLServer.Core.Rollup.AvailabilityGroup.AutomaticFailoverReadiness
AlgorithmBestOf
Source MonitorMicrosoft.SQLServer.Windows.Monitor.AvailabilityGroupHealth.AutomaticFailoverReadiness
RelationshipMicrosoft.SQLServer.Windows.AvailabilityGroupReferencesAvailabilityGroupHealth
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateFalse
Alert Auto ResolveTrue
RemotableTrue
AccessibilityPublic

Source Code:

<DependencyMonitor ID="Microsoft.SQLServer.Windows.Rollup.AvailabilityGroup.AutomaticFailoverReadiness" Accessibility="Public" Enabled="true" Target="SqlCoreLib!Microsoft.SQLServer.Core.AvailabilityGroup" ParentMonitorID="SqlCoreLib!Microsoft.SQLServer.Core.Rollup.AvailabilityGroup.AutomaticFailoverReadiness" Remotable="true" Priority="Normal" RelationshipType="SqlDiscW!Microsoft.SQLServer.Windows.AvailabilityGroupReferencesAvailabilityGroupHealth" MemberMonitor="Microsoft.SQLServer.Windows.Monitor.AvailabilityGroupHealth.AutomaticFailoverReadiness">
<Category>AvailabilityHealth</Category>
<Algorithm>BestOf</Algorithm>
<MemberUnAvailable>Warning</MemberUnAvailable>
</DependencyMonitor>