Availability Database Backup Status

Microsoft.SQLServer.2012.AlwaysOn.Monitor.AvailabilityDatabaseHealth.BackupStatus (UnitMonitor)

The monitor checks availability of a full database backup and its age as reported by Microsoft SQL Server; it does not apply any logic regarding the replicas preferred for the backup.

Knowledge Base article:

Summary

This monitor checks the existence and age of the database backup as reported by Microsoft SQL Server. This is done by running a query against the master database of the SQL instance and returning the age of the database backup. The monitor does not apply any logic regarding the replicas preferred for the backup.

Causes

Database has not been backed up for too long.

Resolutions

You should perform a backup of one of the availability database's replicas to resolve the issue.

To eliminate this issue in future it is recommended to schedule an automated backup according to the needs of the application and business requirements.

External

Best Practice recommendations for SQL Server Database Backups

Overridable Parameters

Name

Description

Default Value

Backup Period (days)

The target backup frequency in days. Should be set according to your Recovery Point Objective (RPO).

7

Enabled

Enables or disables the workflow.

No

Generates Alerts

Defines whether the workflow generates an Alert.

Yes

Interval (seconds)

The recurring interval of time in seconds in which to run the workflow.

86400

Synchronization Time

The synchronization time specified by using a 24-hour format. May be omitted.

 

Timeout (seconds)

Specifies the time the workflow is allowed to run before being closed and marked as failed.

300

Element properties:

TargetMicrosoft.SQLServer.2012.AlwaysOn.AvailabilityDatabaseHealth
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledFalse
Alert GenerateFalse
Alert Auto ResolveFalse
Monitor TypeMicrosoft.SQLServer.2012.AlwaysOn.MonitorType.AvailabilityDatabaseHealth.BackupStatus
RemotableTrue
AccessibilityPublic
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2012.AlwaysOn.Monitor.AvailabilityDatabaseHealth.BackupStatus" Accessibility="Public" Enabled="false" Target="AlwaysOnDisc!Microsoft.SQLServer.2012.AlwaysOn.AvailabilityDatabaseHealth" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.AlwaysOn.MonitorType.AvailabilityDatabaseHealth.BackupStatus" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<OperationalStates>
<OperationalState ID="Good" MonitorTypeStateID="Good" HealthState="Success"/>
<OperationalState ID="Bad" MonitorTypeStateID="Bad" HealthState="Error"/>
</OperationalStates>
<Configuration>
<InstanceName>$Target/Host/Property[Type="AlwaysOnDisc!Microsoft.SQLServer.2012.AlwaysOn.AvailabilityGroupHealth"]/InstanceName$</InstanceName>
<DatabaseName>$Target/Property[Type="AlwaysOnDisc!Microsoft.SQLServer.2012.AlwaysOn.AvailabilityDatabaseHealth"]/DatabaseName$</DatabaseName>
<Threshold>7</Threshold>
<IntervalSeconds>86400</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>