可用性副本数据同步监视器

Microsoft.SQLServer.Windows.Monitor.AvailabilityGroupHealth.AvailabilityReplicasSynchronizing (UnitMonitor)

可用性副本数据同步

Knowledge Base article:

摘要

此监视器将汇总可用性组中所有可用性副本的数据同步状态,并检查是否有任何可用性副本的同步未执行。如果任何可用性副本的同步状态为 NOT SYNCHRONIZING,此监视器将无法正常运行。如果任何可用性副本的数据同步状态均不是 NOT SYNCHRONIZING,此监视器将正常运行。

原因

在此可用性组中,至少一个辅助副本具有 NOT SYNCHRONIZING 同步状态,未从主副本接收数据。

解决方法

使用可用性副本监视器状态查找具有 NOT SYNCHRONIZING 状态的可用性副本,然后解决该可用性副本上的问题。

可替代参数

名称

说明

默认值

已启用

启用或禁用工作流。

生成警报

定义工作流是否生成警报。

间隔(秒)

运行工作流的重复间隔时间(秒)。

900

同步时间

使用 24 小时格式指定的同步时间。可以忽略。

 

超时(秒)

指定工作流在关闭之前允许运行的时间,并标记为失败。

300

数据库连接超时(秒)

如果在指定期间无法访问数据库,工作流将失败并注册一个事件。

15

Element properties:

TargetMicrosoft.SQLServer.Windows.AvailabilityGroupHealth
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateFalse
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Windows.MonitorType.AlwaysOnSystemPolicy
RemotableTrue
AccessibilityPublic
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.AvailabilityGroupHealth.AvailabilityReplicasSynchronizing" Accessibility="Public" Enabled="true" Target="SqlDiscW!Microsoft.SQLServer.Windows.AvailabilityGroupHealth" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Windows.MonitorType.AlwaysOnSystemPolicy" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="HealthState" HealthState="Success"/>
<OperationalState ID="Critical" MonitorTypeStateID="ErrorState" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<InstanceName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<MonitoringType>$Target/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<PolicyName>AlwaysOnAgReplicasDataSynchronizationHealthPolicy</PolicyName>
<BagKey>1-$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.AvailabilityGroupHealth"]/AvailabilityGroupName$</BagKey>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>