此监视器将检查任何发布是否有任何非活动订阅。
如果未在指定保持期内同步,订阅可以停用或过期。发生的操作取决于复制类型和已超出的保持期。
订阅在保持期内未成功同步。
事务:
如果订阅未在最大分发保持期(默认值为 72 小时)内同步,且分发数据库中有尚未传递到订阅服务器的更改,则在分发服务器上运行的分发清除作业会将订阅标记为已停用。订阅必须重新初始化。
合并:
如果发布的保持期为 14 天,则如果订阅未在 14 天内同步,订阅将过期。如果发布服务器在 SQL Server 2005 或更高版本上运行,且订阅代理来自 SQL Server 2005 或更高版本,则仅当该订阅的分区中的数据没有任何更改时订阅才过期。例如,假设订阅服务器仅接收德国客户的客户数据。如果保持期设置为 14 天,则仅当过去 14 天德国客户的数据发生更改时订阅才在第 14 天过期。
检查分发/合并代理是否失败并出错。检查作业历史记录并获取详细信息。
对已处于非活动状态的订阅,请检查分发数据库的 Msrepl_errors 表中是否有任何错误。请修复此错误并重新初始化订阅。
如果事务复制中不存在任何错误,请在 MSdistribution_history 表中查看订阅变成非活动状态的原因。如果合并复制中不存在任何错误,请在 msmerge_history 表中查看订阅变成非活动状态的原因。
名称 | 说明 | 默认值 |
已启用 | 启用或禁用工作流 | 是 |
生成警报 | 定义工作流是否生成警报 | 是 |
间隔(秒) | 运行工作流的重复间隔时间(秒)。 | 900 |
超时(秒) | 超时(秒) | 300 |
同步时间 | 同步时间 |
|
Target | Microsoft.SQLServer.2014.Replication.Publisher | ||
Parent Monitor | System.Health.ConfigurationState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2014.Replication.MonitorType.PublisherSubscriptionsMonitor | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor |
<UnitMonitor ID="Microsoft.SQLServer.2014.Replication.Monitor.PublisherSubscriptionsMonitor" Accessibility="Public" Enabled="true" Target="MS2RD!Microsoft.SQLServer.2014.Replication.Publisher" ParentMonitorID="Health!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2014.Replication.MonitorType.PublisherSubscriptionsMonitor" ConfirmDelivery="false" RunAs="MSRL!Microsoft.SQLServer.Replication.Monitoring.RunAs.Monitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.Replication.Monitor.PublisherSubscriptions.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/ConnectionString$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='Message']$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Health" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<SqlTimeout>300</SqlTimeout>
<ConnectionString>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/Distributor$</ConnectionString>
<DistributorDbName>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/DistributorDatabaseName$</DistributorDbName>
<PublisherServerName>$Target/Property[Type='MSRL!Microsoft.SQLServer.Replication.Library.GenericPublisher']/ConnectionString$</PublisherServerName>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>